Comment puis-je m’assurer que mon processus ne verrouille jamais un autre processus d’un fichier?

J’ai un processus Windows qui s’exécute en arrière-plan et sauvegarde régulièrement les fichiers. La sauvegarde est effectuée en téléchargeant le fichier sur un serveur.

Pendant la sauvegarde, je ne souhaite pas verrouiller une autre application en écrivant ou en lisant le fichier. Si une autre application souhaite modifier le fichier, je devrais arrêter le téléchargement et fermer le fichier.

Le mode de partage est inutile ici; Même si je partage tous les access au fichier en cours de lecture, si l’autre processus tente de l’ouvrir pour écrire sans partager la lecture, il sera exclu du fichier.

Est-il possible d’accomplir cela sous Windows, sans écrire de pilote?

Vous pouvez être intéressé par la copie Shadow du volume .

Vous pouvez certainement copier le fichier puis vérifier que l’original et la copie sont identiques (représentant ainsi un instantané cohérent) avant de les télécharger sur le serveur.

Selon cette page MSDN , si vous utilisez NTFS, vous devriez être en mesure de verrouiller le fichier dans une transaction de votre part, tout en téléchargeant le fichier sur un serveur. Cela garantira que votre vue du fichier ne change pas, même si le fichier a été modifié en externe.