c++怎么锁定文件防止被意外删除_Windows文件安全属性【避坑】

关键在于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是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值