可能重复:
DirectoryInfo.Delete(True) Doesn't Delete When Folder Structure is Open in Windows Explorer
伙计们,我正在编写一个python测试工具,项目的一部分涉及卸载一个应用程序,然后每晚重新安装它。部分卸载任务涉及删除数据目录。在白天,测试人员/开发人员将登录计算机,偶尔会打开命令提示符和/或日志文件。这会导致我的脚本失败,因为如果另一个进程有句柄,Windows将不允许我删除文件。
我想知道是否可以获取保存在文件中的进程的pid,以便我可以使用WMI或类似的东西来终止进程?我想这样做而不会让人退出。
如果不可能那么有没有办法,从python,强制注销所有用户,以获得一个系统,我的脚本可以继续工作而不等待我出现并杀死进程/注销用户?
非常欢迎任何建议。我不是一位经验丰富的Windows程序员。
答案 0 :(得分:1)
所以看起来sysinternals提供了解决方案。
handle.exe完成这项工作。
进行系统调用(例如python中的子进程模块)并在输出中搜索您要删除的目录。获取pid然后使用另一个系统调用psKill.exe来终止进程。
我还没有编写代码,但是我按照命令执行了这个过程并且它有效。使用对psTools进行系统调用的任何编程语言来编写脚本应该是微不足道的。