[英]How to lock a directory and prevent it from being deleted?
我需要检查目录是否存在,如果不存在则创建它,并在应用程序启动时将其锁定。 因此,只要应用程序运行,任何人都无法删除该目录。
我想我可以在它里面保存一个哑文件并保持打开状态,这样它不能被删除,但我宁愿不这样做 。 我该如何实现?
现在,我需要在其中写入文件时执行此操作:
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
即使在此示例中,仍然可以删除Directory.CreateDirectory
和File.Create
调用之间的Directory.CreateDirectory
。
在目录中创建一个虚拟临时文件,并在程序有效期内保持打开状态。 这样,任何试图删除目录的人都会收到“目录正在使用”错误消息,并且无法删除。
我建议您在某个地方创建一个临时文件夹,并在该处进行所有处理,一旦完成,就创建文件并将其移动到目标文件夹。 成功完成所有操作后,您可以删除您的临时文件夹。
在目录上使用CreateFile WINAPI函数。 没有经过测试,但我认为它可以工作。
[DllImport("kernel32.dll", SetLastError = true)]
private static extern SafeFileHandle CreateFile(
string lpFileName,
FileAccess dwDesiredAccess,
FileShare dwShareMode,
IntPtr lpSecurityAttributes,
FileMode dwCreationDisposition,
int dwFlagsAndAttributes,
IntPtr hTemplateFile);
const int FILE_FLAG_BACKUP_SEMANTICS = 0x02000000;
var dirlock = CreateFile("C:\\mydir", FileAccess.Read, FileShare.None, IntPtr.Zero, FileMode.Open,
FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.