阻止程序在Windows中删除文件?


8

我有一个可执行程序(没有源代码),该程序在某个文件夹中创建临时文件,然后在最后将其删除。我在程序上遇到了麻烦,想检查一下临时文件,看看是否可以在不更改源代码的情况下做任何事情。

有什么办法可以防止程序删除文件,或者防止所有程序删除某个文件夹中的文件?


1
为什么不在程序运行时检查文件?程序是否将其创建的所有临时文件都保持锁定状态?
joeqwerty

它会创建它们,并删除它们的速度太快
JoelFan 2011年

Answers:


9

您可以更改相关文件夹的ACL,以便运行可执行文件的帐户(很可能是)可以在其中创建,写入,编辑文件,但不能删除。两个问题:

  1. 您当然可能导致程序崩溃

  2. 之后,您将必须重新获得对文件夹的控制(获得所有权,重置所有权限等)才能删除文件


4
+1使用NTFS ACL,Deny条目优先于Allow。您可以添加一个条目Deny Delete和/或Deny Delete Subfolders/Files用于Everyone到目录中。我们经常这样做以捕获软件安装的提取/下载文件。
jscott 2011年

3
@jscott:来自MS:如果对象具有显式的Allow权限条目,则继承的Deny权限不会阻止对该对象的访问。显式权限优先于继承的权限,甚至继承的“拒绝”权限。technet.microsoft.com/zh-CN/library/cc736316(WS.10).aspx。这篇文章很旧,但据我所知行为没有改变。
joeqwerty

0

由于它是在制作文件,因此它以文件所有者的身份运行,并且可以删除它们,因此我认为您无法为父目录上的NTFS CACLS预先配置任何内容。

您可以尝试自己打开另一个程序中的文件,以查看是否可以防止删除。您也可以在文件创建到另一个文件夹后立即尝试复制和/或移动文件。


1
所有权仅覆盖一个文件许可权-更改对象的ACL的能力。您仍然可以拒绝其他所有内容(甚至包括“读取权限”)。
user1686 2011年

除非您当然已设置了创建者所有者的完全控制
权限
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.