
Wie kann ich die Dateisperre in Windows deaktivieren, sodass gesperrte Dateien wie in Linux-Systemen überschrieben werden können?
Ich entwickle ein Plugin, das eine DLL ist. Bevor ich es erneut kompiliere, 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 durch Entladen/Laden neu laden könnte. Unter Linux ist das kein Problem, der Compiler überschreibt einfach das Plugin und beim nächsten Öffnen wird die neue Version verwendet. Windows hat eine Schreibsperre darauf, sodass der Compiler es nicht schreiben kann und abbricht.
Antwort1
Sie können die Sperrung von ausführbaren Dateien/Bibliotheksdateien nicht „einfach“ deaktivieren.
Sie können jedochverschieben oder umbenennenin Verwendung befindliche Dateien, sorgen Sie daher dafür, dass Ihr Build-Prozess die vorhandene DLL an eine andere Stelle verschiebt und die neue an ihrer Stelle kompiliert.
Es ist sehr gut möglich, dass sie keinen versteckten Schalter dafür eingebaut haben, weil verschiedene Teile des Betriebssystems davon ausgehen,es wird immer an sein. Beispielsweise könnte es sein, dass der Dateisystemcode erwartet, dass es immer mindestens einen Link zu einer Datei gibt (und daher Speicherplatz sofort nach dem Löschen dieses letzten Links freigegeben werden kann) – wenn Sie ihn also zum Löschen einer verwendeten Datei zwingen, könnte dies zu verschiedenen Arten von Beschädigungen des Dateisystems führen, beispielsweise dazu, dass zwei Dateien denselben Speicherplatz belegen.
Das gesagt,Das Alte Neuehat einmal geschrieben, dass es eigentlich nicht schwer wäre, das Löschen von Dateien im Linux-Stil im WinNT-Kernel zuzulassen und dass sie es einfach nicht getan haben, um einige Kompatibilitätsprobleme zu vermeiden.