创建只读不可删除文件

时间:2016-06-16 09:32:58

标签: c++ c winapi

我尝试创建不可删除且只读的文件。 (它是一个exe,所以也许我也需要执行。)

我试图用这个来实现它:

SetFileAttributes(My_File_Path,FILE_ATTRIBUTE_READONLY);

但它只能防止写入(它允许读取它但不写入它),而反对删除它什么都不做,即使根据MSDN它应该保护不被删除:

  

只读文件。应用程序可以读取文件,但无法写入或删除它。目录上不支持此属性。有关详细信息,请参阅“您无法在Windows Server 2003,Windows XP或Windows Vista中查看或更改文件夹的只读或系统属性

如何阻止文件被删除?

  • 文件系统是NTFS。
  • 这是为了保护。这些文件供孩子们使用,我想阻止他们删除文件。 (或者,尽可能地删除。)
  • 我正在寻找程序化解决方案

1 个答案:

答案 0 :(得分:0)

删除文件是目录更改,实际上不是文件更改。如前所述,您无法使用属性,您需要完整的NTFS访问控制列表(ACL)。特别是,您需要的是访问控制条目(ACE)

  1. 拒绝
  2. Everyone
  3. 修改整个目录的权利
  4. 您可以选择使用属性

    将另一个ACE添加到ACL
    1. 允许
    2. yourself
    3. 修改整个目录的权利
    4. ACL上的ACE按顺序处理,因此这可以防止您将自己锁定。

相关问题