So identifizieren Sie den Prozess, der eine Datei in Windows gesperrt hat

Wenn Sie versuchen, eine Datei oder einen Ordner zu löschen, der/das von einem Prozess verwendet wird, wird das Dialogfeld „Datei verwendet“ mit dem Namen des Programms angezeigt, das die Datei gesperrt hat.

Es gibt jedoch Fälle, in denen das Dialogfeld "Datei wird verwendet" nicht den Namen des Prozesses anzeigt, der eine Sperre für die Datei hat, die Sie löschen möchten. In einigen Fällen zeigt das Dialogfeld "Die Aktion kann nicht abgeschlossen werden, da die Datei geöffnet ist in" ein anderer Prozess“.

Finden Sie heraus, welcher Prozess eine Datei gesperrt hat

Für die Untersuchung von Prozessen und gesperrten Dateien ist der Windows Sysinternals Process Explorer wahrscheinlich die erste Option, die den meisten Benutzern in den Sinn kommt. Es gibt jedoch zwei eingebaute Lösungen, um die aktuelle Liste der geöffneten Dateien zusammen mit den entsprechenden Prozessnamen anzuzeigen.

Finden Sie heraus, welcher Prozess eine Datei gesperrt hat, indem Sie:

  1. Ressourcenmonitor (resmon.exe)
  2. Process Explorer von Microsoft Sysinternals
  3. Handle von Microsoft Sysinternals
    • Dateihandle über das Rechtsklickmenü finden
  4. Openfiles.exe integriertes Konsolentool
    • Nachverfolgung lokaler Datei-Handles aktivieren
    • Geöffnete Dateien und die entsprechenden Prozessnamen anzeigen
    • Von freigegebenen Ordnern geöffnete Dateien trennen
  5. OpenedFilesView von Nirsoft.net (3rd party)

1. Ressourcenmonitor

Resource Monitor (resmon.exe) ist ein integriertes Tool mit vielen nützlichen Funktionen. Mit Resource Monitor können Sie Verfolgen Sie die aktuelle Netzwerk- und Internetnutzung, zugehörige Handles anzeigen für gesperrte Dateien, und verwalten Sie Prozesse genauso wie mit dem Task-Manager.

Um den Prozessnamen zu finden, für den eine Datei gesperrt ist, klicken Sie auf die Registerkarte CPU, und geben Sie den Dateinamen oder einen Teil davon in das Textfeld Zugehörige Handles ein.

Finden Sie heraus, welcher Prozess eine Datei gesperrt hat

Wir haben den Ressourcenmonitor bereits behandelt. Schauen Sie sich diese Artikel an:

  • So verwenden Sie den Ressourcenmonitor, um herauszufinden, welcher Prozess eine Datei gesperrt hat?
  • Welches Programm nutzt Ihre gesamte Internetbandbreite? Verwenden Sie den Ressourcenmonitor, um es zu finden

2. Process Explorer

Process Explorer braucht keine Einführung. Im Process Explorer müssen Sie lediglich die Suchfunktion verwenden und den Dateinamen eingeben. Dies zeigt den Prozess, der auf die Datei zugreift.

Finden Sie heraus, welcher Prozess eine Datei gesperrt hat

In der unteren Fensteransicht können Sie das Dateihandle bei Bedarf schließen.

Sie müssen Process Explorer als Administrator ausführen, um Prozesse zu verwalten, die mit erhöhten Rechten ausgeführt werden. Um den Process Explorer zu erhöhen, klicken Sie auf das Menü Datei → Details für alle Prozesse anzeigen.

Sehen Sie sich diese Artikel zum Prozess-Explorer an:

  • Wie lösche ich eine hartnäckige nicht löschbare Datei oder einen Ordner in Windows?
  • Finden Sie heraus, welches Programm Ihre Webcam derzeit verwendet
  • Wie finde ich heraus, welches Programm eine unbekannte Fehlermeldung verursacht hat?
  • Was bedeutet Fehler beim Aufzählen von Objekten im Container?

3. Handle von Windows Sysinternals

Handhaben ist ein Dienstprogramm von Microsoft Sysinternals, das Informationen über offene Handles für jeden Prozess im System anzeigt. Sie können es verwenden, um die Programme anzuzeigen, in denen eine Datei geöffnet ist, oder um die Objekttypen und Namen aller Handles eines Programms anzuzeigen. Handle ist wie eine Befehlszeilenversion von Process Explorer.

Notiz: Handle v4.21 hat a kleiner Fehler wo immer "Keine passenden Handles gefunden" gemeldet wird, wenn der Laufwerksbuchstabe in Großbuchstaben ist. Hoffe Microsoft behebt es im nächsten Update.

Von einem Admin-Eingabeaufforderung Verwenden Sie die Befehlszeilensyntax, um den Prozess zu finden, der die Datei geöffnet hat:

handle.exe -a -u Dateiname_mit_Pfad

Wenn der Dateiname Leerzeichen enthält, schließen Sie ihn in doppelte Anführungszeichen ein.

Beispiel:

handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
Finden Sie heraus, welche Datei für den Prozess gesperrt ist - sysinternals-Handle

(Das Erwähnen des Dateinamens ohne den Pfad funktioniert möglicherweise nicht in jeder Situation. Es ist ratsam, immer den vollständigen Pfad anzugeben.)

Die Ausgabe zeigt den Prozessnamen, die Prozesskennung, den Benutzernamen, den gesperrten (Ziel-)Dateinamen mit Pfad.

Sysinternals-Handle: Befehlszeilenargumente

Verwendung: handle [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [name] [-nobanner]
-ein Alle Handle-Informationen ausgeben.
-l Zeigen Sie einfach durch Auslagerungsdateien unterstützte Abschnittshandles an.
-C Schließt das angegebene Handle (als Hexadezimalzahl interpretiert).
Sie müssen den Prozess durch seine PID angeben. WARNUNG: Das Schließen von Handles kann zu Anwendungs- oder Systeminstabilität führen.
-y Nicht zur Bestätigung des Schließens des Handles auffordern.
-S Druckzähler für jeden geöffneten Grifftyp.
-u Zeigen Sie den besitzenden Benutzernamen an, wenn Sie nach Handles suchen.
-P Dump-Handles, die zum Prozess gehören (Teilname akzeptiert).
Name Suche nach Griffen an Objekten mit (Fragment akzeptiert).
-nobanner Zeigen Sie das Startbanner und die Copyright-Meldung nicht an.

Keine Argumente werden alle Dateiverweise ausgeben.

Sysinternals-Handle zum Kontextmenü hinzufügen

Sie können dem Rechtsklickmenü für Dateien Sysinternals-Handle hinzufügen, um schnell das Programm zu finden, das die Datei gesperrt hat. Um es zum Kontextmenü hinzuzufügen, gehen Sie folgendermaßen vor:

  1. Herunterladen Handhaben von der Microsoft Sysinternals-Site.
  2. Kopieren Sie die Dateien handle.exe & handle64.exe in einen Ordner – z. B. d:\tools
  3. Kopieren Sie die folgenden Codezeilen in Notepad und speichern Sie die Datei als find_handle.vbs an einen festen Standort.
    'Führt das Dienstprogramm Sysinternals Handle.exe mit dem Dateinamenargument aus. '© Ramesh Srinivasan -- https://winhelponline.com/blog. 'Erstellungsdatum: 29. März 2008. 'Aktualisierungsdatum: 11. Juni 2019. 'Für alle Versionen von Windows, einschließlich Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Set objShell = CreateObject("Shell. Anwendung") Set WshShell = CreateObject("WScript. Hülse") Set objFSO = CreateObject("Scripting. FileSystemObject") Wenn WScript. Argumente. Count = 0 Dann sBaseKey = "HKCU\Software\Classes\*\shell\" WshShell. RegWrite sBaseKey & "FindHandle\", "Find Handle", "REG_SZ" WshShell. RegWrite sBaseKey & "FindHandle\command\", "wscript.exe" & & _ WScript. ScriptFullName & & " " & & "%1" &, "REG_SZ" Sonst Wenn objFSO.FileExists (WScript. Argumente (0)) = True Then sFilename = lcase (WScript. Argumente (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sDateiname &, "", "runas", 1 End If. Ende, wenn

    Notiz: Der Pfad Sysinternals Handle.exe ist hartcodiert als d:\tools\handle.exe im obigen Skript. Befindet sich das Programm in einem anderen Pfad, ändern Sie den Pfad im Skript entsprechend. Für 64-Bit-Windows können Sie entweder handle.exe oder handle64.exe

  4. Doppelklick find_handle.vbs um den Kontextmenüeintrag in die Registry aufzunehmen. Sie müssen dies nur einmal tun. Wenn Sie das Skript jedoch in einen anderen Ordner verschieben, müssen Sie erneut darauf doppelklicken, um den Pfad in der Registrierung zu aktualisieren.
  5. Sie werden sehen, Griff finden Option, wenn Sie mit der rechten Maustaste auf eine Datei klicken. Wenn Sie darauf klicken, wird das Skript gestartet, das wiederum handle.exe mit dem Dateinamenargument ausführt, um den Prozess zu finden, der die Datei gesperrt hat.Finden Sie heraus, welche Datei für den Prozess gesperrt ist - sysinternals-Handle

Um das zu entfernen Griff finden Kontextmenüeintrag starten Sie den Registrierungseditor (regedit.exe) und löschen Sie den folgenden Schlüssel:

HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle

4. OpenFiles.exe — ein integriertes Konsolentool

Ein weiteres integriertes Tool, das wir verwenden werden, ist Openfiles.exe, ein Konsolentool, das für Windows nicht neu ist. Es wurde ursprünglich im Jahr 2000 als Teil des Windows Resource Kit 2000/2003-Tools eingeführt. Dieses Dienstprogramm war dann standardmäßig in Windows Vista und höher (einschließlich Windows 10) enthalten. Openfiles zeigt die Liste der aktuell geöffneten Dateien aus lokalen oder freigegebenen Ordnern zusammen mit der Handle-ID und dem Namen der ausführbaren Prozessdatei an. Mit diesem Tool können Sie auch eine oder mehrere Dateien, die remote geöffnet wurden, von einem freigegebenen Ordner trennen.

Aktivieren Sie zum ersten Mal das globale Flag "Pflege Objektliste".

Um die Verfolgung lokaler Dateihandles zu aktivieren, müssen Sie zunächst das Flag "Objektliste pflegen" aktivieren, indem Sie den folgenden Befehl über die Admin-Eingabeaufforderung ausführen.

openfiles /local auf

Sie sehen die folgende Meldung:

INFO: Das System-Global-Flag 'Objektliste pflegen' ist derzeit aktiviert.

Sie müssen diesen Befehl nur zum ersten Mal ausführen. Starten Sie dann Windows neu, damit die Änderung wirksam wird.

Geöffnete Dateien und die entsprechenden Prozessnamen anzeigen

Nach dem Neustart von Windows von einem Admin-Eingabeaufforderung Fenster, Typ:

Dateien öffnen

Dies listet die Datei-/Handle-ID, den Prozessnamen und die Liste der Dateien, die lokal oder remote über lokale Freigabepunkte geöffnet wurden, in einem Tabellenformat auf.

Um die Ausgabe im Listen- oder CSV-Format anzuzeigen, verwenden Sie den Parameter /query.

openfiles /query /FO LIST. openfiles /query /FO CSV

Um die Ausgabe in die Zwischenablage zu kopieren, leiten Sie die Ausgabe wie folgt an Clip.exe weiter. Fügen Sie dann die Ausgabe in Notepad oder einen anderen Editor Ihrer Wahl ein.

openfiles |clip
Finden Sie heraus, welcher Prozess eine Datei gesperrt hat
openfiles /query /FO LISTE |clip. openfiles /query /FO CSV |clip
Finden Sie heraus, welcher Prozess eine Datei gesperrt hat

Weitere Informationen zum Kopieren der Eingabeaufforderungsausgabe in die Zwischenablage oder zum Speichern der Ausgabe in einer Datei finden Sie im Artikel Wie kopiere ich den Ausgabetext der Eingabeaufforderung in die Zwischenablage oder speichere sie in einer Datei?

Um herauszufinden, ob eine bestimmte Datei von einem Programm verwendet wird (und um zu wissen, welches Programm), können Sie die folgende Befehlszeile verwenden.

openfiles | findstr /i 

Beispiel:

openfiles | findstr /i eiffel

Der obige Befehl listet alle geöffneten Dateien auf, deren Dateiname das Wort „eiffel“ enthält. In diesem Beispiel hat Word 2016 derzeit die Sperre für die Datei „The Eiffel Tower.docx“ (ID 4576).

Finden Sie heraus, welcher Prozess eine Datei gesperrt hat

Und das Dialogfeld "Datei wird verwendet" sagt mir dasselbe.

Finden Sie heraus, welcher Prozess eine Datei gesperrt hat

Trennen Sie die Dateien, die aus der Ferne vom freigegebenen Ordner geöffnet wurden.

Um Dateien zu trennen, die im freigegebenen Ordner geöffnet sind, damit Sie sie löschen, umbenennen oder den Inhalt ändern können, verwenden Sie die /disconnect Parameter, um Verbindungen zu dieser Datei zu trennen. Hier sind die Befehlszeilenoptionen.

OPENFILES /Disconnect [/S System [/U Benutzername [/P [Passwort]]]] {[/ID id] [/A Zugriff durch] [/O openmode]} [/OP openfile] Beschreibung: Ermöglicht einem Administrator das Trennen von Dateien und Ordnern, die remote über ein freigegebenes. geöffnet wurden Mappe. Parameterliste: /S System Gibt das Remote-System an, zu dem eine Verbindung hergestellt werden soll. /U [Domäne\]Benutzer Gibt den Benutzerkontext an, unter dem der Befehl ausgeführt werden soll. /P [Kennwort] Gibt das Kennwort für den angegebenen Benutzerkontext an. /ID id Gibt an, dass geöffnete Dateien nach Datei-ID getrennt werden. Der Platzhalter "*" kann verwendet werden. /A accessedby Gibt an, dass alle geöffneten Dateien nach dem Wert "accessedby" getrennt werden. Der Platzhalter "*" kann verwendet werden. /O openmode Gibt an, dass alle geöffneten Dateien nach dem Wert "openmode" getrennt werden. Gültige Werte sind Read, Write oder Read/Write. Der Platzhalter "*" kann verwendet werden. /OP openfile Gibt an, dass alle offenen Dateiverbindungen getrennt werden, die von einem bestimmten "offenen Datei"-Namen erstellt wurden. Der Platzhalter "*" kann verwendet werden. /? Zeigt diese Hilfemeldung an. Beispiele: OPENFILES /Disconnect /? OPENFILES /Disconnect /ID 1 OPENFILES /Disconnect /A Benutzername OPENFILES /Disconnect /O Lesen/Schreiben OPENFILES /Disconnect /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Disconnect /S System /U Benutzername /ID 5 OPENFILES /Disconnect /S System /U Benutzername /P Passwort /ICH WÜRDE *

Openfiles.exe erledigt perfekt die Aufgabe, alle geöffneten Dateien zusammen mit den Prozessnamen aufzulisten, kann jedoch keine Prozesse gewaltsam beenden. Dieses hervorragende (aber übersehene) integrierte Konsolentool kann jedoch nützlich sein, wenn Sie schnell einen Prozessnamen finden möchten, der verwendet wird einer Datei oder zum Trennen einer Datei, auf die ein Netzwerkbenutzer über einen freigegebenen Ordner zugreift – ohne von einem Drittanbieter abhängig zu sein Lösung.

5. GeöffneteDateienAnsicht

GeöffneteDateienAnsicht von Nirsoft zeigt die Liste aller geöffneten Dateien auf Ihrem System an. Für jede geöffnete Datei werden zusätzliche Informationen angezeigt: Handle-Wert, Lese-/Schreib-/Löschzugriff, Dateiposition, der Prozess der die Datei geöffnet hat, und mehr… Optional können Sie auch eine oder mehrere geöffnete Dateien schließen oder den Prozess schließen, der diese geöffnet hat Dateien.

Finden Sie heraus, welcher Prozess eine Datei gesperrt hat

Sie können Prozesse ausgewählter Dateien schließen oder ausgewählte Datei-Handles schließen. Die Handlenummer wird in Hex-Werten dargestellt, während das Konsolentool openfiles.exe sie im normalen Format anzeigt. Mit diesem Tool können Sie auch eine Kontextmenüoption hinzufügen, um über das Kontextmenü schnell den Prozess zu finden, der derzeit eine Datei verwendet. Die Kontextmenüoption / Befehlszeilenunterstützung ist meiner Meinung nach eine der nützlichsten Funktionen von OpenedFilesView.


Eine kleine Bitte: Wenn Ihnen dieser Beitrag gefallen hat, teilen Sie ihn bitte?

Eine "kleine" Aktie von Ihnen würde dem Wachstum dieses Blogs sehr helfen. Einige tolle Vorschläge:
  • Pin es!
  • Teilen Sie es mit Ihrem Lieblingsblog + Facebook, Reddit
  • Tweete es!
Also vielen Dank für Ihre Unterstützung, mein Leser. Es dauert nicht länger als 10 Sekunden Ihrer Zeit. Die Share-Buttons befinden sich direkt darunter. :)

Ezoikdiese Anzeige melden