【问题标题】:Delete files that windows does not want me to delete?删除windows不想我删除的文件?
【发布时间】:2010-04-13 20:32:00
【问题描述】:

在我的公司,我们正在编写一个脚本来处理我们通常手动完成的简单任务。我正在使用 c# 删除 c:\documents and settings\ 中的配置文件,少数除外。这些将被单独留下。问题是,即使使用将文件设置为正常并将管理员用户标记为所有者的代码,它们也不会删除。他们说快速启动文件夹的访问被拒绝。我正在使用递归权限更改方法,并且我知道它有效。与文件属性相同。为什么它不起作用?我该如何解决这个问题?

【问题讨论】:

    标签: c# windows delete-file


    【解决方案1】:

    问题可能是其他进程打开了这些文件或目录的句柄。为了帮助您找出应归咎于哪些进程,您可以使用Process Explorer 的查找功能来查找它们。

    (要明确一点:这不是关于如何编写代码来删除文件的建议,而是关于如何准确找出阻止当前系统工作的原因的建议。)

    【讨论】:

      【解决方案2】:

      这可能不是权限问题,而是文件锁定问题。两者似乎都是权限问题。

      【讨论】:

      • 文件锁定是一个可以通过将属性设置为正常来设置的属性,对吧?
      • @user315881:不,我的意思是文件被一个对文件有锁定句柄的进程锁定(通常这意味着文件已打开以供写入)。除非通过获得锁的进程,否则您无法将其关闭。
      【解决方案3】:

      您可以通过从http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx 下载 Process Explorer 工具来验证这是否是由文件锁定而不是访问控制引起的

      以管理员身份运行并使用 Find->Handle 或 Dll 查看它是否被锁定。

      否则,您应该能够毫无问题地取得所有权并授予删除权限。

      【讨论】:

        【解决方案4】:

        这非常棘手,您需要使用 PInvoke 来调用本机 API(我不确定是哪些)。 Unlocker,用于解锁其他进程正在使用的文件的实用程序可以执行此操作。它尚不适用于 Windows 7 和某些 Windows 版本的 64 位版本。

        【讨论】:

        • Unlocker 曾经很棒,但我认为是在 1.8.6 中添加了后门特洛伊木马(那些“ebay”快捷方式)。该网站声称 ebay 快捷方式已被删除并替换为“必应工具栏”,但我仍然对使用它持怀疑态度。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-06
        • 2015-03-20
        相关资源
        最近更新 更多