Question Comment verrouiller à dessein exclusivement un fichier?


Je veux garder un verrou exclusif sur un fichier afin qu'il ne puisse être lu ou écrit par rien d'autre. Existe-t-il un outil ou une commande Windows simple pour ce faire?

Je suppose que l'outil ou l'utilitaire implémenterait le LockFileEx Fonction Windows

Remarque: J'ai essayé des éditeurs de texte comme Notepad et Notepad ++ sur un fichier texte, mais ils ne contiennent pas de verrou exclusif.


72
2018-06-09 02:24


origine


Pourquoi ne pas en créer un? Aussi, combien de temps devraient-ils tenir la serrure? Devraient-ils attendre un événement? - Mehrdad
J'ai envisagé d'en programmer un mais j'ai pensé qu'il était possible d'utiliser un outil, un éditeur ou une commande rapide. Sur le superutilisateur, tous les utilisateurs ne sont pas des programmeurs. bit.ly/lXT6ey Je ne voulais pas aller sur la route Stackoverflow avec cette question. Je teste le comportement d'une application lorsqu'elle ne peut pas accéder aux fichiers. - John K
Je pourrais peut-être en créer un pour vous - sachez simplement quand le verrou doit être libéré. - Mehrdad
voir aussi ma question similaire superuser.com/questions/519389/flock-command-for-windows - eadmaster
Apparemment, les éditeurs tels que Notepad et Notepad ++ ne gardent même pas le fichier ouvert de manière non exclusive. - John


Réponses:


Essayer Easy File Locker (freeware).

enter image description here


21
2017-10-13 04:50



Ne fonctionne pas sous Windows 2003 - Eric Bonnot
Cette application ne semble pas "verrouiller" les fichiers autant que modifier l'autorisation sur le fichier. Ceci est une distinction importante si vous essayez de tester la façon dont votre application gère les fichiers qui sont activement ouverts / verrouillés par une autre application. Dans mon cas, cette application n'a pas fonctionné. La solution "notepad> file" devrait être la solution. - javajavajavajavajava


Solution plus simple: Dans le répertoire qui vous intéresse, lancez-vous depuis la ligne de commande:

notepad >filetolock

En tant que sortie stdout redirigée, elle restera verrouillée jusqu'à la fin de l'application (bloc-notes).

Notez que le "filetolock" sera écrasé par le ré-direct, donc vous ne voulez probablement pas utiliser un fichier existant de quelque importance. Un "filetolock" vide n'a aucune importance pour l'application que vous essayez de tester, car l'application ne pourra pas l'ouvrir de toute façon.


111
2017-09-24 20:09



utilisez plutôt la redirection pour écraser filetolock maintenant: notepad >>filetolock - eadmaster
solution très utile, pas besoin d'installer quoi que ce soit - Aprillion
C'est une solution bien meilleure que le téléchargement de plus de logiciels gratuits. - BenCr
Fonctionne toujours sous Windows 10. Devrait être la réponse acceptée - SoonDead
Pour une raison quelconque, cela doit être exécuté dans cmd.exe. Cela ne fonctionne pas dans PowerShell. Le fichier est créé et le bloc-notes est ouvert, mais vous pouvez toujours supprimer le fichier malgré l'ouverture du bloc-notes. Je l'ai testé sur Windows Server 2012 et Windows 10. - Ville Salonen


Ouvrez-le avec MS-Excel ... cette application verrouille un fichier tout en étant ouvert.


24
2018-06-10 08:11



Et j'ai pensé qu'Excel était utile avant! - Scott Stafford


Verrouiller un fichier sans outils tiers, aucun changement au fichier être verrouillé et le fichier ne peut même pas être copié

Ce script PowerShell est une citation d'une réponse à une question similaire.

Si vous trouvez cela utile, vous pouvez voter la réponse originale et pas cette annonce.

#Specify the file name
$fileName = "C:\myfile.txt"

#Open the file in read only mode, without sharing (I.e., locked as requested)
$file = [System.io.File]::Open($fileName, 'Open', 'Read', 'None')

#Wait in the above (file locked) state until the user presses a key
Write-Host "Press any key to continue ..."
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

#Close the file
$file.Close()

24
2017-12-28 20:17



J'ai trouvé cette solution unique. Notepad et EasyFileLocker ne bloquent pas totalement le fichier et peuvent toujours être copiés (testés sur Windows 10) - HypeZ
Pour l'utilisation de Powershell ISE [void](Read-Host 'Press Enter to continue') au lieu de $host.UI.RawUI.ReadKey(...) comme ReadKey n'est pas pris en charge dans la pseudo-console dans Powershell ISE. - SimonTewsi


FileLocker est un outil de ligne de commande freeware / open source.

Usage:

FileLocker [/T LockTime] [/I] [/K] [/Q] file [file...]

/T LockTime     Time in milliseconds to lock the file
/I              Infinite locking until process is killed (default)
/K              Lock file until key is pressed
/Q              Be quiet.

9
2017-08-13 15:59



Cela a fonctionné pour moi où d'autres solutions n'ont pas - cowlinator
Notez que sous Windows 10, il doit être exécuté en tant qu'administrateur. - cowlinator


Je ne peux pas écrire de commentaires, donc j'ajoute mon info de cette façon:

https://stackoverflow.com/questions/5860542/how-can-i-simulate-a-locked-file-one-which-has-a-write-lock

EDIT: résumé de l'autre question:

  • commande de pause: ( >&2 pause ) >> file2lock.txt

  • Des programmes MS comme Word ou Excel se verrouillent aussi (fonctionne pour les fichiers texte)

  • Utiliser par programme LockFileEx (Windows API) avec LOCKFILE_EXCLUSIVE_LOCK et LOCKFILE_FAIL_IMMEDIATELY


3
2017-09-14 07:59





Voici comment je reproduis le comportement d'un fichier verrouillé pour les tests de bogues.

Dim s comme nouveau StreamReader ("C: \ test \ sampleFile.txt")

J'ajoute cette ligne à mon test unitaire pour verrouiller le fichier, puis exécute le test en mode débogage pour répliquer le mauvais comportement lorsqu'un fichier donné est verrouillé.

Je ne sais toujours pas comment mes utilisateurs professionnels verrouillent le fichier donné. Comme vous l'avez dit, le bloc-notes ne peut pas le verrouiller exclusivement.

Heureusement, déclarer un streamreader verrouille un fichier exclusivement, sauf indication contraire de votre part.


1
2017-11-10 19:29