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

515

Eine Sache, die mich an Windows ärgert, ist der alte Fehler bei der Verletzung der Freigabe . Oft kann man nicht identifizieren, was es offen hält. Normalerweise ist es nur ein Editor oder Explorer, der auf ein relevantes Verzeichnis verweist, aber manchmal musste ich meinen Computer neu starten.

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

Cletus
quelle
12
Sie würden denken, dass die Windows-Leute uns nach all der Zeit eine Möglichkeit geben würden, dies einfach aus dem Explorer heraus zu tun. Ich frage mich, warum das nicht passiert ist?
Cawflands
6
Ich finde, dass Explorer sehr oft der Problemprozess ist, der eine Datei ohne offensichtlichen Grund festhält.
Eddie
Ich weiß, das hilft dir nicht viel, aber ich denke, ich habe mich daran erinnert, dass dies eine geplante Funktion der nächsten Windows-Version nach Vista und 2008 Server war. oder vielleicht ist es eine WinFS-Sache. nicht sicher, wo ich das gelesen habe ...
Kip
Siehe meine Antwort auf Superuser hier , zusammenfassend OpenedFilesView funktioniert immer noch im Jahr 2019
Vijay

Antworten:

440

Ich hatte Erfolg mit Sysinternals Process Explorer . Mit dieser Option können Sie nach Prozessen suchen, bei denen eine Datei geöffnet ist, und Sie können sie verwenden, um die Handles zu 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 Geben Sie einen Find->Find Handle or DLL... Teil des Dateipfads ein. Die Liste der Prozesse wird unten angezeigt.

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

  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i e:\ - Finde alle auf Laufwerk E geöffneten Dateien:
  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i file-or-path-in-question
Eddie
quelle
17
Sie können den Griff schließen, aber denken Sie daran, dass Sie den Teppich unter einer Anwendung herausziehen. Die Ergebnisse sind bestenfalls unvorhersehbar.
WaldenL
12
@ Walden: Auf jeden Fall. YMMV. Mit WinXP hatte ich Explorer schon oft ohne ersichtlichen Grund einen Punkt geöffnet und weigerte mich, ihn zu schließen. Wenn dies für eine zu löschende Datei geschieht, können Sie das Schließen des Handles erzwingen oder einen Neustart durchführen. Bisher habe ich dies Dutzende Male getan und keine negativen Auswirkungen erlitten. Gehen Sie wie bei jedem fortgeschrittenen Werkzeug mit Vorsicht und Urteilsvermögen vor.
Eddie
5
Das Schließen der Handles kann dazu führen, dass die App das Handle für eine andere Datei erneut verwendet, was zu Beschädigungen führt - siehe Jeffs Antwort unten: serverfault.com/a/15695/79266 ... viel sicherer, wenn Sie die Anwendung beenden , die die Datei geöffnet hält will nicht neu starten.
RichVel
14
Wenn Sie für den Explorer übrigens die Strg-Umschalttaste gedrückt halten und mit der rechten Maustaste auf einen leeren Bereich des Startmenüs klicken, wird "Explorer
beenden" angezeigt
2
Es hilft nicht bei nicht exekutiven Dateien wie Textdateien. Ich muss wissen, wer in eine Protokolldatei schreibt. Irgendeine Idee?
Xaqron
183

Sie können die Verwendung Ressourcenmonitor für diese , die kommt in gebaut mit Windows 7, 8 und 10.

  1. Öffnen Sie den Ressourcenmonitor , den Sie finden
    • Durch Suchen nach Resource Monitor oder resmon.exe im Startmenü oder
    • Als Schaltfläche auf der Registerkarte Leistung in Ihrem Task-Manager
  2. Wechseln Sie zur Registerkarte CPU
  3. Verwenden Sie das Suchfeld im Abschnitt Zugehörige Handles
    • Siehe den blauen Pfeil in der Abbildung 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!

Ressourcenmonitor-Screenshot

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

Svish
quelle
2
Es ist erwähnenswert, dass es schwierig sein kann, dieses Programm unter Windows 8 zu finden - eine Suche nach "resmon.exe" sollte es finden.
Kylotan,
4
@Kylotan, hör auf Zeit zu verschwenden. Laufen Sie einfach resmon direkt von cmd
Pacerier
1
@ Pacerier: Schön. Ich bin nicht an Dinge gewöhnt, die sich im Windows-Pfad befinden.
Kylotan,
Das steht mir besser als "Griff | FindStr 'und' Unlocker 'Alternativen, obwohl sie auch effektiv sind
Marcus Vinicius Pompeu
4
In Windows 10 weiterhin gültig und über die Schaltfläche "Open Resource Monitor" im Task-Manager -> Registerkarte "Leistung" verfügbar.
Norman Breau
92

Versuchen Sie es mit dem Befehl openfiles .

John Fouhy
quelle
10
+1 für einen eingebauten Befehl, obwohl ich ProcessExplorer die meiste Zeit persönlich benutze.
RBerteig
Wirklich hilfreich.
Marko
7
FEHLER: Auf dem Zielsystem muss ein 32-Bit-Betriebssystem ausgeführt werden.
Bozojoe
4
funktioniert nicht für 64 OS!
12
Dies scheint für Windows 2012R2 64bit zu funktionieren, aber Sie müssen den Dienst "Open Local Tracking" aktivieren, indem Sie ihn ausführen openfiles /local onund neu starten. Dies macht diese Funktion nicht sehr nützlich.
Guss
82

Seien Sie vorsichtig beim Schließen der Griffe. Es ist aufgrund des Handle-Recyclings sogar noch gefährlicher als man denkt. Wenn Sie das Datei-Handle schließen und das Programm etwas anderes öffnet, wird das ursprüngliche Datei-Handle, das Sie geschlossen haben, möglicherweise für "etwas anderes" wiederverwendet. Und nun raten Sie mal, was passiert, wenn das Programm fortfährt und denkt, es arbeitet an der Datei (deren Handle Sie geschlossen haben), obwohl dieses Datei-Handle jetzt auf etwas anderes verweist.

Siehe Raymond Chens Beitrag zu diesem Thema

Angenommen, ein Suchindexdienst hat eine Datei zum Indizieren geöffnet, ist jedoch vorübergehend hängen geblieben und Sie möchten die Datei löschen, sodass Sie das Schließen des Handles (unklug) 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. Die festgefahrene Operation wird schließlich abgeschlossen, und der Suchindexdienst beendet nun das geöffnete Handle, schließt jedoch versehentlich das Handle für die Protokolldatei.

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, sodass er in seine Protokolldatei schreibt. Leider wurde das Protokolldatei-Handle geschlossen und das Handle für seine Konfigurationsdatei wiederverwendet. Die protokollierten Informationen gehen in die Konfigurationsdatei ein und beschädigen diese.

Währenddessen wurde ein anderes Handle, das Sie zwangsweise geschlossen haben, als Mutex-Handle wiederverwendet, um zu verhindern, dass Daten beschädigt werden. Wenn das ursprüngliche Dateihandle geschlossen wird, wird das Mutexhandle 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. Und 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 ist, die Protokolldatei auf mysteriöse Weise die Protokollierung gestoppt hat und die Konfigurationsdatei mit Garbage überschrieben wurde. Einige arme Techniker haben die hoffnungslose Aufgabe, herauszufinden, warum der Dienst seine Indizes und Konfigurationsdateien beschädigt, ohne zu wissen, dass die Ursache für die Beschädigung das Schließen eines Handles ist.

Mark Sowul
quelle
12
Wichtige Warnung, dies sollte näher an die Spitze rücken - ein Neustart ist wahrscheinlich besser als eine unbemerkt beschädigte Datei.
RichVel
6
+1 Das wird mich zweifellos zweimal überlegen lassen, ob ich Griffe zum Schließen zwingen soll! Mir kommt es merkwürdig vor, dass Windows die Nummer eines geschlossenen Handles sofort wiederverwendet, anstatt die Nummer weiter zu erhöhen und nur dann umzubrechen, wenn dies erforderlich ist. Dies würde die Wahrscheinlichkeit, dass dieses Problem auftritt, zumindest erheblich verringern.
EM0
1
@ RichVel Das Beenden des Täterprozesses ist wahrscheinlich besser als ein vollständiger Neustart.
Dmitry Grigoryev
@DmitryGrigoryev - guter Punkt, und in der Tat habe ich bereits erwähnt, dass hier
RichVel
2
Dies ist eine sehr wichtige Warnung, die jedoch die Frage nicht beantwortet. Wie finden Sie, welcher Prozess eine Datei in Windows geöffnet hält?
Ploni
29

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

Greg Hewgill
quelle
3
Ich benutze dieses Tool die ganze Zeit. Wenn ich ein USB-Laufwerk nicht auswerfen kann, tippe ich einfach "handle H:" (oder was auch immer der Laufwerksbuchstabe sein mag). Das Beste ist, dass Sie damit die Griffe zwingen können.
Chris Thompson
10

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

Scoregraphic
quelle
Es ist auch über das Kontextmenü dieser Datei im Windows Explorer verfügbar.
User61849
7

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

Allgemeiner Fehler
quelle
Funktioniert nicht unter 64-Bit-Windows 8 und 10.
rustyx
7

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

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 Explorer hier der Täter zu sein scheint, kann es sein, dass dies nur an der Oberfläche liegt und dass der wahre Täter eine Shell-Erweiterung installiert, die alle Dateien in einem Ordner für eigene Zwecke öffnet, dies aber auch gung-ho dabei, oder das reinigt nicht richtig nach sich. Symantec AV ist etwas, was ich bisher gesehen habe, und ich wäre nicht überrascht, wenn auch andere AV-Programme schuld wären. Plug-Ins für die Quellcodeverwaltung können ebenfalls fehlerhaft sein.

Dies ist keine wirkliche 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 möglich ist, aber auf jedem Unix-basierten Betriebssystem besteht ein gemeinsamer Zugriff von Standard).

Maximus Minimus
quelle
1
Ich werde keine Drittanbieter-App dafür verantwortlich machen, dass mein Windows-Explorer Thumbs.db-Dateien immer in seinem Arbeitsverzeichnis sperrt, aber nicht immer entsperrt, wenn ich das Arbeitsverzeichnis wechsle. Zumindest werden sie freigeschaltet, wenn ich das Fenster schließe, ich muss nicht ALLE Entdecker töten ...
Alexander
@Darth, sind Sie ein Vermarkter von Microsoft?
Pacerier
6

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

K. Brian Kelley
quelle
Genau, warum gibt es so komplizierte Antworten?
Rohit Gupta
6

Apropos Explorer hält eine Datei offen: "Wenn dies bei einer zu löschenden Datei geschieht, 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 davon ausgehen, dass das Abmelden und das erneute Anmelden den Trick machen.

Beenden Sie andernfalls den Desktop Explorer-Prozess und tun Sie, was Sie möchten, solange er nicht mehr vorhanden 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, z. B. mit dem Task-Manager. Mach was du willst in der Eingabeaufforderung. Führen Sie abschließend den Explorer an der Eingabeaufforderung aus, und es wird der 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.


quelle
1
Dies ist viel sicherer als das Schließen des Griffs und weniger störend als ein Neustart. Gilt auch für andere Programme - Ich finde oft, dass ein Microsoft Office-Programm Dateien sperrt, selbst wenn ich sie geschlossen habe.
RichVel 30.03.12
5

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

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

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

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

Dirk Paessler
quelle
4

Es gibt auch die Opened Files View von NirSoft .

Christopher Galpin
quelle
1
Persönlich gefällt mir das besser als Process Explorer für diese spezifischen Aufgaben.
JamesBarnett
4

Mit Process Hacker können Sie leicht erkennen, welche Prozesse Ihre Dateien enthalten:

Handles oder DLLs suchen

Ivan Kochurkin
quelle
2

Die oben aufgeführten Antworten beziehen sich auf Situationen, in denen ein Programmprozess das Datei-Handle geöffnet 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) verfügt das System jedoch selbst über ein Datei-Handle öffnen.

Sie können diese Situation identifizieren, indem Sie den Anweisungen zum Auffinden des Vorgangs zum Halten der Datei mit dem Prozess-Explorer oben folgen und feststellen, dass der Prozessname als "System" aufgeführt ist, oder indem Sie den Anweisungen unter Verwendung des Ressourcenmonitors folgen und feststellen, dass kein Bild angezeigt wird Öffnen eines Dateihandles in der Datei, die Sie interessiert (obwohl Sie die Datei natürlich nicht bearbeiten / löschen können).

In diesem Fall können Sie (soweit mir bekannt ist) einen Neustart durchführen - oder vergessen, irgendetwas mit dieser Datei zu tun.

Blair
quelle
0

Jeremy Zawodnys Blog hat mich vor einiger Zeit auf den Exteneded Task Manager aufmerksam gemacht, und er ist großartig, um weitere Informationen zu Prozessen aufzuspüren. +1 für den Prozess-Explorer wie oben, insbesondere für das Beenden von Prozessen, die der Standard-Task-Manager nicht beendet.

nedm
quelle
0

Es gibt ein Tool FILEMON und zeigt geöffnete Dateien und Handles. Es ist schwierig, mit der Anzeige Schritt zu halten, wenn Sie sie live sehen. Das geht schnell. Sie können jedoch verhindern, dass die Datei live angezeigt wird, und Sie können alle Aktivitäten zum Öffnen / Schreiben von Dateien anzeigen. Jetzt im Besitz von Microsoft, aber ursprünglich von Sysinternals

user44304
quelle
1
Die aktualisierte Version von diesem ist Prozessmonitor. Sie können es hier
herunterladen