Как отключить блокировки файлов в Windows

1030
allo

Как отключить блокировку файлов в Windows, чтобы заблокированные файлы можно было перезаписать, как в системах Linux?

Я разрабатываю плагин, который является DLL. Перед повторной компиляцией мне всегда нужно выгружать его в программе, которая его загрузила. Это значительно уменьшило бы работу, если бы я мог компилировать ее всегда и просто перезагружать позже, снова выгружая / загружая. С Linux это не проблема, компилятор просто переопределяет плагин, и когда он открывается в следующий раз, будет использоваться новая версия. Windows имеет блокировку записи, поэтому компилятор не может записать ее и прерывает работу.

1

1 ответ на вопрос

3
grawity

Вы не можете просто отключить блокировку исполняемых / библиотечных файлов.

Тем не менее, вы можете перемещать или переименовывать используемые файлы, поэтому сделайте так, чтобы процесс сборки переместил существующую DLL в другое место и скомпилировал новую вместо нее.


Вполне возможно, что они не добавили скрытый переключатель для него, потому что различные части ОС предполагают, что он всегда будет включен . Например, может случиться так, что код файловой системы ожидает, что всегда есть хотя бы одна ссылка на файл (и, следовательно, пространство может быть освобождено сразу после удаления этой последней ссылки) - так что если вы заставите его удалить файл, который используется, он может привести к различным видам повреждения файловой системы, например, к двум файлам, использующим одно и то же место на диске.

Тем не менее, The Old New Thing однажды написала, что на самом деле не составит труда разрешить удаление файлов в стиле Linux в ядре WinNT, и что они просто не сделали этого, чтобы избежать некоторых проблем совместимости.