it-swarm.com.de

Freigeben von Windows-Dateifreigabesperren

Dieses Problem taucht ab und zu bei der Arbeit auf. Auf unseren Build-Computer kann über eine normale Windows-Dateifreigabe auf seine Dateien zugegriffen werden. Wenn jemand einen Ordner auf dem Computer remote durchsucht und das Fenster über Nacht geöffnet lässt, schlägt der Build (wie jetzt) ​​fehl. Das geöffnete Explorer-Fenster zeigt auf einen der Unterordner im Quellbaum. Der Build löscht die Quelle und führt vor dem Erstellen einen sauberen Checkout durch. Das Löschen schlägt fehl.

Im Moment möchte ich den Build zum Laufen bringen. Ich bin von zu Hause aus angemeldet und möchte den Build-Computer nicht neu starten. Ich kann die Person, deren Rechner sucht, und die Dateien nicht erreichen, und ich kann ihren Rechner nicht remote neu starten.

Wenn eine Windows-Freigabe eine Sperre hat, ist der Sperrvorgang System. Ich glaube nicht, dass ich sie wie bei normalen Sperren töten kann.

Kennt jemand eine Möglichkeit, die Sperre für einen freigegebenen Ordner aufzuheben, ohne den Computer neu starten zu müssen?

29
Jonathan Wright

Eine Lösung gefunden.

  1. Finden Sie den Prozess mit Process Explorer :

    1. Laden Sie und extrahieren Sie procexp.exe
    2. Verwenden Sie im Prozess-Explorer den Befehl "Handle oder DLL suchen ..." aus dem Menü "Suchen"
    3. Geben Sie den Namen des Verzeichnisses ein, bei dem Probleme beim Löschen auftreten
    4. Eine Liste der geöffneten Dateien, die diesem Namen entsprechen, sollte angezeigt werden. Nehmen Sie einige Vermutungen an und finden Sie heraus, welche nicht gelöscht werden kann. Wenn die Datei durch eine Windows-Freigabe gesperrt ist, lautet der Prozess, der die Datei enthält, System
    5. Notieren Sie sich das Verzeichnis, das offen gelassen wurde
  2. Laden Sie den Unlocker herunter und installieren Sie ihn (Warning: Link entfernt, da er Malware enthält)

    1. Installieren Sie Unlocker, indem Sie die Option für Explorer-Erweiterungen und andere Junk-Programme deaktivieren
  3. Entsperren Sie das Verzeichnis

    1. Öffnen Sie ein Cmd-Fenster und navigieren Sie zu C:\Programme\Unlocker
    2. Führen Sie im Cmd-Fenster Unlocker.exe "den Pfad zum verriegelten Ordner" aus.
    3. Ein Dialogfeld wird angezeigt, in dem die Sperrfreigabe bestätigt wird. Verwenden Sie die Schaltfläche zum Entsperren, um die Datei zu entsperren

Nun sollte das Verzeichnis entsperrt sein und kann jetzt gelöscht werden.

24
Jonathan Wright

Wenn Sie auf dem Server Administrator sind und die Datei über das Netzwerk freigeben, können Sie die integrierte Windows-Funktion verwenden:

  1. Start → Arbeitsplatz → Klicken Sie mit der rechten Maustaste → Verwalten, um zur ComputerManagement-Konsole zu gelangen
  2. Navigieren Sie in der linken Navigation zu Systems Tools → Shared Folders
  3. Hier können Sie Freigaben, Sitzungen und offene Dateien anzeigen. So können Sie herausfinden, wer welche Dateien von welchen Arbeitsstationen aus geöffnet hat.
  4. Klicken Sie mit der rechten Maustaste auf ein Element in der Liste, um die Dateisperre entfernen zu können.

Hoffe das hilft.

23
sudheeshix

Probieren Sie Process Hacker aus: https://wj32.org/processhacker/

Process Hacker ist wie Process Explorer bei Steroiden. 

Drücken Sie STRG + F, oder klicken Sie auf die Schaltfläche "Handles von DLLs suchen", um find den fehlerhaften Prozess zu suchen, und suchen Sie nach dem Dateinamen.

Wenn Sie die Datei im Dialogfeld "Suchpunkte" gefunden haben, können Sie einfach mit der rechten Maustaste auf die Datei klicken und "Schließen" wählen. (zumindest für v2.39.124)

Ältere Versionen hatten im Kontextmenü des Prozesses die Option "Terminator". Klicken Sie mit der rechten Maustaste auf den fehlerhaften Prozess -> Miscellaneous -> Terminator -> Abschlussverfahren auswählen. Beachten Sie, dass einige möglicherweise gefährlich sind und unbeabsichtigte Folgen haben können.

3
Charles Burns

Ich hatte ähnliche Probleme, und keiner dieser Vorschläge, die ich oben gesehen habe, scheint für automatisierte Builds über Nacht geeignet zu sein (wie das Originalposter implizierte), da sie alle manuelle Anstrengungen erfordern, um die Schlösser zu jagen und zu töten.

Die einzige Methode, die ich ausprobiert habe und die zuverlässig funktioniert, besteht darin, die Freigabe selbst zu entfernen, den Build zu erstellen und dann die Freigabe wieder hinzuzufügen. Hier ist eine Möglichkeit, die Freigabe automatisch zu entfernen:

D:\Projects> net share Projekte/LÖSCHEN/J

Benutzer haben geöffnete Dateien in Projekten. Wenn Sie den Vorgang fortsetzen, werden die Dateien geschlossen.

Projekte wurden erfolgreich gelöscht.

(HINWEIS: Das erneute automatische Erstellen der Freigabe kann sehr schwierig sein, wenn die Berechtigungsgruppen, die Sie angeben müssen, unordentlich sind.)

1
Sean

Eine andere Möglichkeit ist, ab Windows Vista das im System integrierte Windows-Tool zu verwenden: 

ressourcen überwachen: perfmon.exe /res

Auszug aus: Http://www.sysadmit.com/2017/06/windows-how-to-know-that-process-has-open-a-file.html

0
Panuels

Ich mache das, indem ich sowohl OpenFiles.exe als auch Handle.exe .__ benutze. Sie können sie in beliebiger Reihenfolge ausführen und Ihre Ressource wird vollständig entsperrt.

OpenFiles: um File-Sharing-Sitzungen zu trennen

Handle.exe: um offene Griffe freizugeben (versuchen Sie nicht, Griffe von pid4 zu schließen, da dies der Systemprozess ist)

Sie können dies automatisieren, indem Sie Powershell, Batch oder eine beliebige Sprache Ihrer Wahl verwenden.

0
Cogent