关键在于CreateFile的dwShareMode参数:不设FILE_SHARE_DELETE才能防删,只读属性对DeleteFile无效,句柄关闭或进程退出即解锁,推荐用临时文件+原子替换更可靠。用 CreateFile 设置文件共享模式才是关键Windows 下“锁定文件”不是靠改属性,而是靠打开时拒绝其他进程的访问权限。很多人误以为设 FILE_ATTRIBUTE_READONLY 或用 SetFileAttributes 就能防删,其实只影响写入,对 DeleteFile 完全无效——只要权限够,只读文件照样秒删。真正起作用的是 CreateFile 的 dwShareMode 参数。想让文件不被删除,必须确保没有其他进程以 FILE_SHARE_DELETE 打开它。你自己打开时,就别放行这个标志:CreateFile(L"test.txt", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, ...) —— 允许别人读/写,但不允删除如果传 FILE_SHARE_DELETE,等于主动给他人开了删除后门句柄不关闭,锁就一直有效;进程退出或调用 CloseHandle 后,锁自动释放为什么 SetFileAttributes + 只读没用设置 FILE_ATTRIBUTE_READONLY 仅影响打开方式:比如 CreateFile(..., GENERIC_WRITE, ...) 会失败,但 DeleteFile 不检查这个标志,只要用户有目录的写权限(WRITE_DAC / DELETE_CHILD),就能删。常见误解场景:立即学习“C++免费学习笔记(深入)”; Tellers AI Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。
c++怎么锁定文件防止被意外删除_Windows文件安全属性【避坑】
最新推荐文章于 2026-08-22 18:00:57 发布

1095

被折叠的 条评论
为什么被折叠?



