Wie deaktiviere ich Dateisperren in Windows?

1142
allo

Wie kann ich das Sperren von Dateien in Windows deaktivieren, damit gesperrte Dateien wie in Linux-Systemen überschrieben werden können?

Ich entwickle ein Plugin, welches eine DLL ist. Bevor ich es erneut kompilieren kann, muss ich es immer in dem Programm entladen, das es geladen hat. Es würde die Arbeit erheblich reduzieren, wenn ich es immer kompilieren und später einfach wieder laden könnte, indem ich es wieder entlade / lade. Mit Linux ist das kein Problem, der Compiler überschreibt einfach das Plugin und wenn es das nächste Mal geöffnet wird, wird die neue Version verwendet. Windows hat eine Schreibsperre, so dass der Compiler sie nicht schreiben kann und abbricht.

1

1 Antwort auf die Frage

3
grawity

Sie können das Sperren von ausführbaren Dateien / Bibliotheken nicht "nur" deaktivieren.

Sie können in-use-Dateien jedoch verschieben oder umbenennen. Bewegen Sie also den Build-Prozess, um die vorhandene DLL an eine andere Stelle zu verschieben und die neue an ihrer Stelle zu kompilieren.


Es ist sehr wahrscheinlich, dass sie keinen versteckten Schalter hinzugefügt haben, da verschiedene Teile des Betriebssystems davon ausgehen, dass es immer eingeschaltet ist . Zum Beispiel könnte es sein, dass der Dateisystemcode erwartet, dass immer mindestens eine Verknüpfung zu einer Datei vorhanden ist (und daher sofort nach dem Löschen der letzten Verknüpfung Speicherplatz freigegeben werden kann). Wenn Sie also das Löschen einer verwendeten Datei erzwingen, ist dies der Fall kann zu verschiedenen Arten von Dateisystemfehlern führen, z. B. zwei Dateien, die denselben Speicherplatz verwenden.

Das heißt, The Old New Thing hat einmal geschrieben, dass es eigentlich nicht schwer sein, Linux-basiertes Löschen von Dateien im WinNT Kernel zu ermöglichen, und dass sie nur noch nicht getan, so einige Kompatibilitätsprobleme zu vermeiden.