Remplacer le fichier par un autre dans une opération atomique (Windows)

J’ai deux fichiers: A et B. Je dois remplacer B par A, alors que B est ouvert dans un autre programme.

L’approche suivante:

MoveFile pour renommer B en C, puis renommer A en B, puis supprimer C

fonctionne bien Cependant, j’ai besoin d’un moyen atomique pour le faire, car si un renommage échoue, les données restront dans un état incohérent.

J’ai essayé MoveFileEx avec l’indicateur MOVEFILE_REPLACE_EXISTING , mais cela ne fonctionne pas lorsque le fichier B est ouvert par un autre programme. Même chose pour la fonction ReplaceFile . D’autres idées? Je vous remercie