it-swarm.com.de

Wie finden Sie heraus, welcher Prozess eine Datei in Windows geöffnet hält?

Eine Sache, die mich an Windows nervt, ist der alte Sharing-Verstoß Fehler. Oft kann man nicht erkennen, was es offen hält. Normalerweise ist es nur ein Editor oder Explorer, der nur auf ein relevantes Verzeichnis verweist, aber manchmal musste ich meinen Computer neu starten.

Irgendwelche Vorschläge, wie man den Täter findet?

538
cletus

Ich hatte Erfolg mit SysinternalsProcess Explorer . Auf diese Weise können Sie suchen, um herauszufinden, bei welchen Prozessen eine Datei geöffnet ist, und Sie können damit die Handles schließen, wenn Sie möchten. Natürlich ist es sicherer, den gesamten Prozess abzuschließen. Seien Sie vorsichtig und urteilen Sie.

Um eine bestimmte Datei zu finden, verwenden Sie die Menüoption Find->Find Handle or DLL.... Geben Sie einen Teil des Pfads zur Datei ein. Die Liste der Prozesse wird unten angezeigt.

Wenn Sie die Befehlszeile bevorzugen, enthält Sysinternals Suite das Befehlszeilentool Handle , das offene Handles auflistet. Einige Beispiele zur Verwendung:

  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i e:\ - Finde alle Dateien, die von Laufwerk E geöffnet wurden:
  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i file-or-path-in-question
455
Eddie

Sie können hierfür den Ressourcenmonitor verwenden, der mit integriert ist Windows 7, 8 und 10.

  1. Öffnen Sie den Ressourcenmonitor , der
    • Durch Suchen nach Resource Monitor oder resmon.exe im Startmenü oder
    • Als Schaltfläche auf der Registerkarte Leistung in Ihrem Task-Manager
  2. Gehen Sie zur Registerkarte [~ # ~] cpu [~ # ~]
  3. Verwenden Sie das Suchfeld im Abschnitt Zugehörige Handles
    • Siehe blauen Pfeil im Screenshot unten

Wenn Sie das Handle gefunden haben, können Sie den Prozess anhand der Spalte Bild und/oder PID identifizieren.

Sie können dann versuchen, die Anwendung wie gewohnt zu schließen, oder, falls dies nicht möglich ist, einfach mit der rechten Maustaste auf das Handle klicken und den Vorgang direkt von dort aus beenden. Kinderleicht!

Resource Monitor screenshot

Von meiner ursprünglichen Antwort kopiert: https://superuser.com/a/643312/62

195
Svish

Versuchen Sie den Befehl openfiles .

93
John Fouhy

Seien Sie nur sehr vorsichtig beim Schließen der Griffe. Es ist sogar noch gefährlicher als Sie denken, weil das Handle recycelt wird. Wenn Sie das Dateihandle schließen und das Programm etwas anderes öffnet, wird das ursprünglich von Ihnen geschlossene Dateihandle möglicherweise für dieses "etwas anderes" wiederverwendet. Und jetzt raten Sie mal, was passiert, wenn das Programm fortgesetzt wird und denkt, dass es an der Datei arbeitet (deren Handle Sie geschlossen haben), obwohl das Dateihandle jetzt auf etwas anderes verweist.

siehe Raymond Chens Beitrag zu diesem Thema

Angenommen, ein Suchindexdienst hat eine Datei zum Indizieren geöffnet, bleibt jedoch vorübergehend hängen und Sie möchten die Datei löschen, sodass Sie (unklugerweise) das Schließen des Handles erzwingen. Der Suchindexdienst öffnet seine Protokolldatei, um einige Informationen aufzuzeichnen, und das Handle für die gelöschte Datei wird als Handle für die Protokolldatei wiederverwendet. Der feststeckende Vorgang wird schließlich abgeschlossen, und der Suchindexdienst schließt schließlich das geöffnete Handle, schließt jedoch das Handle der Protokolldatei unabsichtlich.

Der Suchindexdienst öffnet eine andere Datei, beispielsweise eine Konfigurationsdatei zum Schreiben, damit ein dauerhafter Status aktualisiert werden kann. Das Handle für die Protokolldatei wird als Handle für die Konfigurationsdatei wiederverwendet. Der Suchindexdienst möchte einige Informationen protokollieren und schreibt daher in seine Protokolldatei. Leider wurde das Protokolldatei-Handle geschlossen und das Handle für die Konfigurationsdatei wiederverwendet. Die protokollierten Informationen werden in die Konfigurationsdatei aufgenommen und beschädigen diese.

In der Zwischenzeit wurde ein anderes Handle, das Sie erzwungen haben, als Mutex-Handle wiederverwendet, um zu verhindern, dass Daten beschädigt werden. Wenn das ursprüngliche Dateihandle geschlossen wird, wird das Mutex-Handle geschlossen und der Schutz vor Datenbeschädigung geht verloren. Je länger der Dienst ausgeführt wird, desto beschädigter werden seine Indizes. Irgendwann bemerkt jemand, dass der Index falsche Ergebnisse zurückgibt. Wenn Sie versuchen, den Dienst neu zu starten, schlägt dies fehl, da die Konfigurationsdateien beschädigt wurden.

Sie melden das Problem der Firma, die den Suchindexdienst erstellt, und sie stellen fest, dass der Index beschädigt wurde, die Protokolldatei auf mysteriöse Weise nicht mehr protokolliert wurde und die Konfigurationsdatei mit Müll überschrieben wurde. Einem armen Techniker wird die hoffnungslose Aufgabe übertragen, herauszufinden, warum der Dienst seine Indizes und Konfigurationsdateien beschädigt, ohne zu wissen, dass die Ursache der Beschädigung darin besteht, dass Sie ein Handle geschlossen haben.

83
Mark Sowul

Ich habe Handle mit Erfolg verwendet, um solche Prozesse in der Vergangenheit zu finden.

29
Greg Hewgill

Lockhunter ( http://lockhunter.com/ ) funktioniert auf 32- und 64-Bit-Systemen.

11
Scoregraphic

Zur Verdeutlichung ist dies eher auf ein schlechtes Verhalten von Apps von Drittanbietern zurückzuführen, die den API-Aufruf CreateFile nicht korrekt verwenden, als auf Windows selbst. Vielleicht ist es eine Folge des Designs von CreateFile, aber fertig ist fertig und wir können nicht zurück.

Grundsätzlich haben Sie beim Öffnen einer Datei in einem Windows-Programm die Möglichkeit, ein Flag anzugeben, das den gemeinsamen Zugriff ermöglicht. Wenn Sie das Flag nicht angeben, greift das Programm exklusiv auf die Datei zu.

Wenn der Explorer hier der Schuldige zu sein scheint, kann es sein, dass dies nur an der Oberfläche liegt und dass der wahre Schuldige eine Shell-Erweiterung installiert, die alle Dateien in einem Ordner für eigene Zwecke öffnet, dies aber auch ist gung-ho dabei, oder das räumt nach sich selbst nicht richtig auf. Symantec AV habe ich schon einmal gesehen, und ich wäre nicht überrascht, wenn auch andere AV-Programme schuld wären. Plug-Ins für die Quellcodeverwaltung sind möglicherweise ebenfalls fehlerhaft.

Also nicht wirklich eine Antwort, sondern nur ein Ratschlag, Windows nicht immer für ein möglicherweise schlecht geschriebenes Programm eines Drittanbieters verantwortlich zu machen (was auch auf jedem anderen Betriebssystem mit impliziter Dateisperrung passieren kann, aber jedes Unix-basierte Betriebssystem hat gemeinsamen Zugriff durch Standard).

7
Maximus Minimus

Who Lock Me funktioniert gut und amüsiert die Leute mit dem Namen!

7
Generic Error

Apropos Explorer hält eine Datei offen: "Wenn dies bei einer Datei geschieht, die Sie löschen müssen, haben Sie die Wahl, das Schließen des Handles zu erzwingen oder einen Neustart durchzuführen."

Sie können den Explorer einfach beenden.

Wenn dies eine einmalige Sache ist (der Explorer hält diese Datei normalerweise nicht offen), würde ich vermuten, dass das Abmelden und erneutes Anmelden den Trick macht.

Beenden Sie andernfalls den Desktop Explorer-Prozess und tun Sie, was Sie wollen, während er weg ist. Starten Sie zuerst eine Kopie von cmd.exe (Sie benötigen eine Benutzeroberfläche, um die beabsichtigte Bereinigung durchzuführen). Stellen Sie sicher, dass keine Nicht-Desktop-Explorer ausgeführt werden. Beenden Sie dann den letzten Explorer beispielsweise mit dem Task-Manager. Machen Sie im Befehl Eingabeaufforderung, was Sie wollen. Führen Sie den Explorer schließlich über den Befehl Eingabeaufforderung aus, und er wird zum Desktop.

Ich würde vermuten, dass es einige verbleibende Unannehmlichkeiten geben kann, wenn einige Systray-Programme den Neustart der Shell nicht bewältigen können.

6
dave

Wenn Sie auf einem Remoteserver eine Netzwerkfreigabe überprüfen, kann diese Computerverwaltungskonsole diese Informationen anzeigen und die Datei schließen.

6
K. Brian Kelley

Dateien können durch lokale Prozesse ( nlocker ist das zu verwendende Tool) und durch Dateizugriff, der über Freigaben eingeht, gesperrt werden.

In Windows ist eine Funktion integriert, die Ihnen anzeigt, welche Dateien auf dem lokalen Computer vom Remotecomputer geöffnet/gesperrt werden (der die Datei über eine Dateifreigabe geöffnet hat):

* Select "Manage Computer" (Open "Computer Management")
* click "Shared Folders"
* choose "Open Files"

Dort können Sie die Datei sogar zwangsweise schließen.

5
Dirk Paessler

Mit Process Hacker können Sie leicht identifizieren, welche Prozesse Ihre Dateien speichern:

(Find Handles or DLLs

4
Ivan Kochurkin

Es gibt auch NirSofts Opened Files View .

4

Die oben genannten Antworten beziehen sich auf Situationen, in denen ein Programmprozess das Dateihandle offen hält, was (zum Glück) die meiste Zeit der Fall ist. In einigen Fällen (wie dies derzeit auf diesem System der Fall ist) hält das System selbst jedoch ein Dateihandle öffnen.

Sie können diese Situation identifizieren, indem Sie den Anweisungen folgen, um den Prozess zum Halten des Dateihandles mit dem Prozess-Explorer oben zu finden, und feststellen, dass der Prozessname als "System" aufgeführt ist, oder indem Sie den Anweisungen mithilfe des Ressourcenmonitors folgen und feststellen, dass kein Bild angezeigt wird Öffnen eines Dateihandles in Ihrer interessierenden Datei (obwohl offensichtlich etwas funktioniert, da Sie die Datei nicht bearbeiten/löschen usw. können).

In diesem Fall können Sie (soweit mir bekannt ist) neu starten - oder vergessen, etwas mit dieser Datei zu tun.

2
Blair

Es gibt ein Tool FILEMON, das geöffnete Dateien und Handles anzeigt. Es ist schwierig, mit dem Display Schritt zu halten, wenn Sie es live sehen, es geht so schnell. Sie können jedoch verhindern, dass es live angezeigt wird, und Sie können alle Aktivitäten zum Öffnen/Schreiben von Dateien beobachten. Jetzt im Besitz von Microsoft, aber ursprünglich von Sysinternals

0
user44304

Ich wurde vor einiger Zeit von Jeremy Zawodnys Blog auf den Exteneded Task Manager eingestellt, und es ist großartig, um weitere Informationen zu Prozessen aufzuspüren. +1 für Process Explorer wie oben, insbesondere für das Beenden von Prozessen, die der Standard-Task-Manager nicht beenden wird.

0
nedm