在我的公司,我们正在编写一个脚本来处理我们通常手工完成的简单任务。我使用c#删除c:\ documents和settings \中的配置文件,除了一些。这些将简单地留下。问题是即使使用将文件设置为正常的代码并将管理员用户标记为所有者,它们也不会删除。他们说快速启动文件夹已拒绝访问。我正在使用递归权限更改方法,我知道它的工作原理。文件属性也是如此。为什么它不起作用?我该如何解决这个问题?
答案 0 :(得分:6)
问题可能是其他进程具有对这些文件或目录的打开句柄。为了帮助您找出应该归咎于哪些流程,您可以使用Process Explorer的查找功能来查找它们。
(只是要明确一点:这不是关于如何编写代码来删除文件的建议,而是关于如何准确找出妨碍当前系统工作的建议。)
答案 1 :(得分:3)
它可能不是权限问题,而是文件锁定问题。两者都会出现权限问题。
答案 2 :(得分:1)
您可以通过从http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
下载Process Explorer工具来验证这是由文件锁定而非访问控制引起的以管理员身份运行并使用Find-> Handle或Dll查看它是否被锁定。
否则,您应该能够获得所有权并授予删除权限而不会出现问题。
答案 3 :(得分:0)
这非常棘手,您需要使用PInvoke来调用本机API(我不确定哪些)。 Unlocker,用于解锁其他进程正在使用的文件的实用程序。它尚未与Windows 7和某些版本的Windows 64位版本一起使用。