Comment puis-je déterminer si un fichier spécifique est ouvert sous Windows ?[fermé]
-
08-06-2019 - |
Question
L'un de mes outils préférés pour Linux est lsof - un véritable couteau suisse !
Aujourd'hui, je me suis demandé quels programmes sur un système WinXP avaient un fichier spécifique ouvert.Existe-t-il un utilitaire équivalent à lsof ?De plus, le fichier en question se trouvait sur un partage réseau, je ne sais donc pas si cela complique les choses.
La solution
Utiliser Explorateur de processus à partir de Sysinternals Suite, la fonction Rechercher un handle ou une DLL vous permettra de rechercher le processus avec ce fichier ouvert.
Autres conseils
L'équivalent de lsof -p pid
est la sortie combinée de sysinternals handle et listdlls, c'est-à-dire
handle -p pid
listdlls -p pid
vous pouvez trouver le pid avec sysinternals pslist
.
Un équivalent de lsof pourrait être une sortie combinée de Sysinternals poignée et listdll, c'est à dire.:
c:\SysInternals>handle
[...]
------------------------------------------------------------------------------
gvim.exe pid: 5380 FOO\alois.mahdal
10: File (RW-) C:\Windows
1C: File (RW-) D:\some\locked\path\OpenFile.txt
[...]
c:\SysInternals>listdlls
[...]
------------------------------------------------------------------------------
Listdlls.exe pid: 6840
Command line: listdlls
Base Size Version Path
0x00400000 0x29000 2.25.0000.0000 D:\opt\SysinternalsSuite\Listdlls.exe
0x76ed0000 0x180000 6.01.7601.17725 C:\Windows\SysWOW64\ntdll.dll
[...]
c:\SysInternals>listdlls
Malheureusement, vous devez « exécuter en tant qu'administrateur » pour pouvoir les utiliser.
Aussi listdll et poignée ne produit pas de formulaire continu semblable à un tableau, donc le filtrage du nom de fichier masquerait le PID. findstr /c:pid: /c:<filename>
Cela devrait vous rapprocher des deux utilitaires, cependant
c:\SysinternalsSuite>handle | findstr /c:pid: /c:Driver.pm
System pid: 4 \<unable to open process>
smss.exe pid: 308 NT AUTHORITY\SYSTEM
avgrsa.exe pid: 384 NT AUTHORITY\SYSTEM
[...]
cmd.exe pid: 7140 FOO\alois.mahdal
conhost.exe pid: 1212 FOO\alois.mahdal
gvim.exe pid: 3408 FOO\alois.mahdal
188: File (RW-) D:\some\locked\path\OpenFile.txt
taskmgr.exe pid: 6016 FOO\alois.mahdal
[...]
Ici, nous pouvons voir que gvim.exe est celui qui a ce fichier ouvert.
Essayer Débloqueur.
Le site Unlocker propose un tableau astucieux (faites défiler vers le bas après avoir suivi le lien) qui montre une comparaison avec d'autres outils.Évidemment, de telles comparaisons sont généralement biaisées puisqu'elles sont généralement rédigées par l'auteur de l'outil, mais le tableau répertorie au moins les alternatives afin que vous puissiez les essayer par vous-même.
Si le fichier est un .dll, vous pouvez utiliser le Liste de tâches application en ligne de commande pour voir qui l'a ouvert :
TaskList /M nameof.dll
Si vous cliquez avec le bouton droit sur l'icône « Ordinateur » (ou « Poste de travail ») et sélectionnez « Gérer » dans le menu contextuel, cela vous amènera à la console de gestion de l'ordinateur.
Là, sous Outils système\Dossiers partagés, vous trouverez « Fichiers ouverts ».C'est probablement proche de ce que vous souhaitez, mais si le fichier se trouve sur un partage réseau, vous devrez faire la même chose sur le serveur sur lequel réside le fichier.
Il existe un programme "OpenFiles", qui semble faire partie de Windows 7.On dirait qu'il peut faire ce que vous voulez.Il peut énumérer les fichiers ouverts par les utilisateurs distants (via le partage de fichiers) et, après avoir appelé "OpenFiles / local ON" et un redémarrage du système, il devrait être en mesure d'afficher des fichiers ouverts localement.Ce dernier aurait des pénalités de performance.
Utilisez Process Explorer pour trouver l’ID du processus.Utilisez ensuite Poignée pour savoir quels fichiers sont ouverts.
Par exemple, poignée -p
J'aime cette approche car vous utilisez les utilitaires de Microsoft lui-même.
Dans OpenFilesView, sous le menu Options, il y a un élément de menu nommé "Afficher les fichiers réseau".Peut-être qu'une fois cette option activée, l'utilitaire susmentionné est d'une certaine utilité.