Wie kann ich feststellen, ob eine bestimmte Datei öffnen in Windows?[geschlossen]
-
08-06-2019 - |
Frage
Eine meiner Lieblings-tools für linux ist lsof - ein echtes Schweizer Taschenmesser!
Heute fand ich mich Fragen, welche Programme auf einem WinXP-system hatte eine bestimmte Datei öffnen.Ist es eine entsprechende Dienstprogramm zu lsof?Außerdem wird die Datei in Frage, die über ein Netzwerk teilen, so bin ich nicht sicher, ob das kompliziert die Angelegenheit.
Lösung
Verwenden Process Explorer aus der Sysinternals-Suite, die Find Handle oder DLL-Funktion wird lassen Sie suchen für Sie den Prozess mit der die Datei geöffnet.
Andere Tipps
Das äquivalent von lsof -p pid
wird die kombinierte Ausgabe von sysinternals handle und listdlls, ie
handle -p pid
listdlls -p pid
finden Sie heraus, pid mit sysinternals pslist
.
Ein equivalent lsof kombiniert werden könnte die Ausgabe von Sysinternals' Griff und listdlls, also:
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 in der Lage sein, Sie zu benutzen.
Auch listdlls und Griff tun nicht produzieren kontinuierliche Tisch-wie form, so dass die Filterung mit dem Namen verbergen möchte PID. findstr /c:pid: /c:<filename>
sollte Euch sehr nahe mit beiden Dienstprogramme, obwohl
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 ist das eine mit dieser Datei öffnen.
Versuchen Sie es Unlocker.
Der Unlocker Website hat eine nette Grafik (scrollen Sie nach unten nach dem link), das zeigt ein Vergleich mit anderen tools.Offensichtlich solche Vergleiche sind in der Regel voreingenommen, da Sie in der Regel geschrieben durch die Werkzeug-Autor, aber das Diagramm mindestens listet die alternativen, so dass Sie versuchen können, Sie für sich selbst.
Wenn die Datei ein .dll dann können Sie die TaskList Befehlszeilen-app zu sehen, deren es offen haben:
TaskList /M nameof.dll
Wenn Sie mit der rechten Maustaste auf "Computer" (oder "My Computer" - Symbol) und wählen Sie "Verwalten" aus dem Popup-Menü, das wird nehmen Sie, um Computer-Management-Konsole.
Dort, unter System\Freigegebene Ordner finden Sie "Dateien Öffnen".Dies ist wahrscheinlich nahe an dem, was Sie wollen, aber wenn Sie die Datei auf einer Netzwerkfreigabe befindet, dann müssten Sie tun, die gleiche Sache auf den server, auf dem sich die Datei Leben.
Es gibt ein Programm "OpenFiles", scheint Sie zu werden Teil von windows 7.Scheint, dass es können tun, was Sie wollen.Sie können die Liste der Dateien geöffnet durch remote-Benutzer (über Datei-freigeben) und, nach dem Aufruf "openfiles /Local on" und ein system neu starten, es sollte in der Lage sein zu zeigen, geöffnete Dateien lokal.Letzteres wird gesagt, um Leistungseinbußen.
Process Explorer verwenden, um die Prozess-id.Verwenden Sie dann Griff um herauszufinden, welche Dateien geöffnet sind.
Eg-Griff -p
Ich mag diesen Ansatz, weil du der Verwendung von Hilfsprogrammen von Microsoft selbst.
In OpenedFilesView, unter dem Menü "Optionen" gibt es einen Menüpunkt namens "Show Network Files".Vielleicht mit ein, die es ermöglichte, das oben erwähnte Tool ist von einigem nutzen.