1

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

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

1 ответ1

3

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

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


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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .