Frage Wie kann ich feststellen, ob eine bestimmte Datei in Windows geöffnet ist? [geschlossen]


Eines meiner Lieblingswerkzeuge für Linux ist lsof - ein echtes Schweizer Taschenmesser!

Heute frage ich mich, welche Programme auf einem WinXP-System eine bestimmte Datei geöffnet haben. Gibt es einen gleichwertigen Nutzen für lsof? Darüber hinaus war die fragliche Datei über eine Netzwerkfreigabe, so dass ich nicht sicher bin, ob dies die Angelegenheit erschwert.


75
2017-08-19 04:37


Ursprung


Antworten:


Benutzen Process Explorer Von der Sysinternals Suite aus können Sie mit der Find Handle- oder DLL-Funktion nach dem Prozess mit dieser geöffneten Datei suchen.


61
2017-08-19 04:48



Das Äquivalent von lsof -p pid ist die kombinierte Ausgabe von sysinternals handle und listdlls, dh

handle -p pid
listdlls -p pid

Sie können Pid mit Sysinternals herausfinden pslist.


36
2018-03-01 04:48



Versuchen Griff. Filemon & Regon sind auch großartig für den Versuch, herauszufinden, was das Duce-Programm foo mit Ihrem System macht.


8
2017-08-19 04:46



Versuchen Unlocker.

Die Unlocker-Website hat ein raffiniertes Diagramm (scrollen Sie nach unten, wenn Sie dem Link folgen), das einen Vergleich mit anderen Tools zeigt. Offensichtlich sind solche Vergleiche in der Regel verzerrt, da sie normalerweise vom Autor des Tools geschrieben werden, aber das Diagramm listet zumindest die Alternativen auf, so dass Sie sie selbst ausprobieren können.


5
2017-10-09 17:35



Wenn es sich bei der Datei um eine DLL handelt, können Sie die Datei verwenden Aufgabenliste Befehlszeile App zu sehen, wessen es geöffnet hat:

TaskList /M nameof.dll

5
2018-04-08 18:03



Ein Äquivalent von lsof könnte kombiniert werden Ausgabe von Sysinternals ' Griff und listdlls, d.h.

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

Leider müssen Sie "als Administrator ausführen", um sie verwenden zu können.

Ebenfalls listdlls und Griff erzeugt keine kontinuierliche tabellenartige Form, so dass der Filter-Dateiname PID verbergen würde. findstr /c:pid: /c:<filename> Sie sollten jedoch mit beiden Utilities sehr nahe kommen

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
[...]

Hier können wir sehen, dass gvim.exe derjenige ist, der diese Datei geöffnet hat.


5
2018-03-21 10:36



Wenn Sie mit der rechten Maustaste auf das Symbol "Computer" (oder "Mein Computer") klicken und im Popup-Menü "Verwalten" auswählen, gelangen Sie zur Computerverwaltungskonsole.

Dort finden Sie unter System Tools \ Shared Folders "Open Files". Das liegt wahrscheinlich nahe bei dem, was Sie wollen, aber wenn sich die Datei auf einer Netzwerkfreigabe befindet, müssen Sie das Gleiche auf dem Server tun, auf dem sich die Datei befindet.


4
2017-08-19 04:40



Es gibt ein Programm "OpenFiles", scheint Teil von Windows 7 zu sein. Scheint, dass es tun kann, was Sie wollen. Es kann Dateien auflisten, die von Remote-Benutzern geöffnet wurden (über Dateifreigaben) und nach dem Aufruf "openfiles / Local on" und ein Systemneustart, sollte es in der Lage sein, lokal geöffnete Dateien anzuzeigen. Letzteres soll Leistungsstrafen haben.


3
2018-05-09 15:24



Verwenden Sie Process Explorer, um die Prozess-ID zu finden. Dann benutze Griff um herauszufinden, welche Dateien geöffnet sind.

ZB behandeln -p

Ich mag diesen Ansatz, weil Sie Dienstprogramme von Microsoft selbst verwenden.


2
2018-03-11 13:45



Im GeöffneteFilesView, im Menü Optionen gibt es einen Menüpunkt namens "Show Network Files". Vielleicht ist der oben erwähnte Nutzen von Nutzen, wenn er aktiviert wird.


1
2017-11-28 10:21