![如何在 Windows 中禁用文件锁](https://linux22.com/image/1533481/%E5%A6%82%E4%BD%95%E5%9C%A8%20Windows%20%E4%B8%AD%E7%A6%81%E7%94%A8%E6%96%87%E4%BB%B6%E9%94%81.png)
如何在 Windows 中禁用文件锁定,以便可以像在 Linux 系统中一样覆盖锁定的文件?
我正在开发一个插件,它是一个 dll。在再次编译它之前,我总是需要在加载它的程序中卸载它。如果我可以一直编译它,然后稍后通过再次卸载/加载来重新加载它,这将大大减少工作量。对于 Linux 来说这没有问题,编译器只会覆盖插件,下次打开时将使用新版本。Windows 对其有一个写锁,因此编译器无法写入它并中止。
答案1
您不能“仅仅”禁用可执行文件/库文件的锁定。
但是,你可以移动或重命名正在使用的文件,因此让您的构建过程将现有的 DLL 移动到其他地方并在其位置编译新的 DLL。
他们很可能没有添加隐藏开关,因为操作系统的各个部分都假设它会一直存在。例如,文件系统代码可能期望文件始终至少有一个链接(因此在删除最后一个链接后可以立即释放空间)——所以如果强制它删除正在使用的文件,可能会导致各种文件系统损坏,例如两个文件使用相同的磁盘空间。
话虽如此,旧事物新曾经写道,在 WinNT 内核中允许 Linux 风格的文件删除实际上并不难,他们只是为了避免一些兼容性问题才没有这样做。