Woher weiß Windows, welches Programm die Sperre für eine bestimmte Datei hat, während es versucht, sie zu kopieren?

0

Ich habe mich nur gefragt, warum ältere Windows-Versionen nicht genau angegeben haben, welche Programme eine bestimmte Datei verwenden, sodass Sie sie nicht verschieben können. In neueren Versionen wird jedoch häufig angegeben, dass ein bestimmtes Programm auf die Datei zugreift oder in diesem bestimmten Programm geöffnet ist.

Während ich beispielsweise versuche, eine PDF-Datei vom Desktop in einen anderen Ordner zu verschieben, wird in einem Windows 8.1-Fenster Folgendes angezeigt:

Die Datei kann nicht verschoben werden, da sie in Adobe Reader geöffnet ist.

Wie ruft das Kopierprogramm nun die Information ab, dass Adobe Reader das Programm ist, das eine Art Sperre für die PDF-Datei hat?

Ich meine nur die zugrunde liegenden Betriebssystemdetails zu kennen, auch wenn für Windows. Antworten für andere Betriebssysteme sind ebenfalls willkommen. (Ich würde gerne wissen, wie Sie solche Informationen in Ihren eigenen C-Programmen erhalten können.)

ShivamMax
quelle

Antworten:

0

Alle Windows-Versionen "wussten" immer, welche ausführbare Datei eine Dateisperre hat. Sie erhalten lediglich Informationen, wenn Sie versuchen, eine gesperrte Datei zu verschieben. Sie können diese Informationen in älteren Windows-Versionen mit Programmen wie FileMon sehen . In neueren Versionen von Windows konnte der Ressourcenmonitor diese Informationen bereitstellen, war jedoch keine einfach zu verwendende Benutzeroberfläche.

Ich gehe davon aus, dass Windows 8 die ausführbare Datei nur mit der Sperre der Datei File descriptionin den Eigenschaften der ausführbaren Datei verknüpft . Das Bild unten zeigt einen Screenshot der Eigenschaften von acrord32.exe.

Bildbeschreibung hier eingeben

Keltari
quelle
Meine Frage ist nicht wirklich, wie Windows diese Informationen erhält ... Natürlich würde es wissen ... Es gibt alle Grundelemente für die Prozesse ... Meine Frage ist, wie andere Prozesse erfahren, dass die Datei hat eine Sperre durch eine bestimmte Anwendung? In diesem Fall ... Der Kopiervorgang weiß genau, dass er vom Acrobat Reader verwendet wird.
ShivamMax
Ich erklärte das in meiner Antwort
Keltari
Sie können diese Eigenschaft nur lesen, wenn Sie wissen, dass acrord32 sie verwendet. Der Punkt ist, wie würde mein Prozess wissen, welcher andere Prozess es verwendet?
ShivamMax
0

In allen Windows-Versionen seit 2000 können Sie Dateisperren für Netzwerkdateien und -ordner über die Computerverwaltung verwalten. Wenn dies auch für Sie der Fall ist, können Sie mit dieser Methode die Sperre anzeigen und aufheben.

Gehe zu Control Panel-> Administrative Tasks-> Computer Management.

Entfalten Shared FoldersSie auf der linken Seite und klicken Sie dann auf Open Files.

Einige Hintergrundinformationen

Wenn Sie eine Datei bearbeiten, wird die Datei von Windows (oder einem anderen Betriebssystem) entweder zum Lesen, Lesen / Schreiben oder für den wahlfreien Zugriff geöffnet. Bei den letzten beiden muss in die Datei geschrieben werden. Daher initiiert Windows eine Schreibsperre für eine Datei und markiert diese Datei im Inhaltsverzeichnis der Festplatte als "geschrieben" oder "schreibgesperrt". Je nachdem, welches Dateisystem Sie verwenden, werden Informationen darüber gespeichert, welches Programm in eine Datei schreibt oder nicht. Für den Netzwerkzugriff wird dies nicht in der Datei gespeichert, sondern in einer Datenbank, auf die wie oben beschrieben zugegriffen werden kann. In anderen Fällen wird die Prozess-ID entlang der Sperre gespeichert und gibt an, woher die Sperre stammt.

Wenn ein Prozess nicht mehr in die Datei schreiben muss, gibt er die Sperre frei und entfernt als solche das Flag im Inhaltsverzeichnis des Dateisystems, in das die Datei geschrieben wird.

Tools zum Entsperren können dieses Flag nach Belieben entfernen, aber wenn ein Prozess tatsächlich in eine Datei schreibt, kann dies die Datei selbst beschädigen. Manchmal wird jedoch eine Datei zum Lesen / Schreiben oder für den wahlfreien Zugriff geöffnet, ohne dass tatsächlich darauf geschrieben wird. Die Sperre bleibt jedoch bestehen, falls der Benutzer eine Aktion ausführt, die zu einem späteren Zeitpunkt in die Datei geschrieben werden muss. Es kann auch vorkommen, dass das Programm abgestürzt ist, bevor die Sperre aufgehoben wurde. Diese Sperre ist jedoch immer noch in Kraft, da ein Teil des Programms für den Benutzer nur noch über einen Dienst oder einen inaktiven Prozess zugänglich ist (Sie wissen nicht, welche) ein). In diesem Fall helfen Unlocker oder ein Neustart.

Tools zum Entsperren sind am effektivsten, wenn Sie entweder nicht neu starten möchten oder ein Programm, das beim Booten startet, eine Datei sperrt und Sie die Sperre einfach bei jedem Booten erhalten. (Denken Sie an Spyware oder Dienstprogramme, die Sie verschieben möchten, aber nicht verschieben können. Beachten Sie: Wenn Sie ein Dienstprogramm nicht verschieben können, weil es verwendet wird, sollten Sie es nur verschieben, wenn Sie wissen, was Sie tun.)

LPChip
quelle