【问题标题】:Force delete windows directory from python [duplicate]从python强制删除windows目录[重复]
【发布时间】:2011-01-12 19:15:25
【问题描述】:

可能重复:
DirectoryInfo.Delete(True) Doesn't Delete When Folder Structure is Open in Windows Explorer

伙计们,我正在编写一个 python 测试工具,项目的一部分涉及卸载应用程序,然后每晚重新安装它。部分卸载任务涉及删除数据目录。白天,测试人员/开发人员将登录计算机,偶尔会打开命令提示符和/或日志文件。这会导致我的脚本失败,因为如果另一个进程有句柄,Windows 不会让我删除文件。

我想知道是否有可能获取持有文件的进程的 pid,以便我可以使用 WMI 或类似的方法终止该进程?我想在不注销人员的情况下执行此操作。

如果不可能,那么有没有办法从 python 中强制注销所有用户,以获得一个系统,让我的脚本可以继续工作,而无需等待我出现并杀死进程/注销用户?

非常欢迎任何建议。我不是经验丰富的 Windows 程序员。

【问题讨论】:

    标签: python windows


    【解决方案1】:

    所以看起来 sysinternals 提供了解决方案。

    handle.exe 完成这项工作。

    执行系统调用(例如 python 中的子进程模块)并在输出中搜索您要删除的目录。获取 pid,然后通过对 psKill.exe 的另一个系统调用终止进程。

    我还没有编写代码,但我已经完成了类似命令的过程,它可以工作。使用任何对 psTools 进行系统调用的编程语言编写此脚本应该是微不足道的。

    【讨论】:

    • 我想我应该说“解决方案”。可能有更好的方法,但这种方法适用于我的项目。
    • 我想这比使用 ctypes 和 py2exe 重写 [OpenedFileFinder][1] 工具要好。 [1]:codeproject.com/KB/shell/OpenedFileFinder.aspx
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多