Wie genau werden gesperrte Dateien vom Betriebssystem behandelt?
Oder genauer gesagt: Warum kann ich eine gesperrte Datei manchmal nicht aus dem Windows Explorer löschen, aber wenn ich eine Eingabeaufforderung im betreffenden Verzeichnis öffne, kann ich sie dort löschen?
Antwort1
Wenn ein Prozess einen Handle für eine Datei oder ein Verzeichnis öffnet, gibt er an, welche Freigabeebene er möchte. Die Freigabeebene kann eine beliebige Kombination der Flags FILE_SHARE_DELETE, FILE_SHARE_READ und FILE_SHARE_WRITE sein. Die Namen der Flags sind ziemlich offensichtlich. Wenn ich FILE_SHARE_READ angebe, können andere Prozesse die Datei lesen, FILE_SHARE_WRITE ermöglicht anderen Prozessen, die Datei zu schreiben (wobei sie sie möglicherweise unter meinen Füßen ändert) und FILE_SHARE_DELETE ermöglicht anderen Prozessen, die Datei zu löschen (obwohl ich glaube, dass sie erst gelöscht wird, wenn ich meinen Datei-Handle schließe).
Wenn ein Prozess einen Handle zu einer Datei öffnet undnichtGeben Sie FILE_SHARE_DELETE an. Dies bedeutet, dass kein anderer Prozess die Datei löschen kann, bis der erste Prozess seinen Handle geschlossen hat. Dies ist der übliche Grund für die Fehlermeldung „Datei ist von einem anderen Prozess gesperrt“. Beachten Sie, dass Prozesse auch Handles für Verzeichnisse öffnen können. Dies gilt also auch für das Löschen von Verzeichnissen, selbst wenn diese leer sind.
Warum man eine Datei aus einer Eingabeaufforderung löschen kann, wenn man sie nicht aus dem Explorer löschen kann, verstehe ich nicht. Ich müsste es mit eigenen Augen sehen.
JR
Antwort2
John hat Recht... Sie können keine Dateien löschen, die gerade verwendet werden, weil... sie gerade verwendet werden. Aus demselben Grund können Sie Ihre Reifen nicht auf dem Weg zur Arbeit wechseln. Es würden alle möglichen unerwarteten Dinge passieren.
Wenn Sie wissen möchten, welcher Prozess die Datei verwendet (damit Sie den Prozess vorübergehend beenden können, sodass die Sperre für die Datei aufgehoben wird), verwenden SieProcess Explorervon Microsoft/Sysinternals.
- Klicken Sie auf das Menü „Suchen“ und wählen Sie „Handle oder DLL suchen …“
- Geben Sie den Namen der Datei ein, die Sie nicht löschen können und die durch einen Prozess gesperrt ist.
- Nachdem Sie den Suchbegriff eingegeben haben, klicken Sie auf die Schaltfläche Suchen
Wenn eine Datei von Windows verwendet wird, können SieMoveOnBootvon Gibin Software, um die gesperrte Datei nach einem Neustart zu löschen.
Antwort3
Ich vermute, dass Sie eine Erweiterung eines Drittanbieters im Explorer haben, die die Datei kurz öffnet, um sie zu scannen, wodurch der Explorer sie sperrt. Tritt dieses Problem nur bei größeren Dateien auf? Sperren sind in der Windows-Welt Sperren, keine Eingabeaufforderung kann eine gesperrte Datei löschen (obwohl es, wie oben erwähnt, Möglichkeiten gibt, die Sperre zu schließen und dann die Datei zu löschen).