2011-01-12 99 views
3

可能重复:
DirectoryInfo.Delete(True) Doesn't Delete When Folder Structure is Open in Windows Explorer部队从蟒蛇删除Windows目录

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

我想知道是否有可能获得持有该文件的进程的PID,所以我可以用WMI或类似的东西杀死进程?我想在不记录人的情况下做到这一点。

如果不可能,那么是否有办法从python强制注销所有用户以获得一个系统,我的脚本可以继续工作而无需等待我显示并终止进程/注销用户?

任何建议都非常受欢迎。我不是一个有经验的Windows程序员。

回答

1

因此它看起来像sysinternals提供的解决方案。

handle.exe完成这项工作。

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

我还没有编写代码,但我经历了这个命令的过程,就像它工作。使用任何编程语言对psTools进行系统调用的脚本应该是微不足道的。

+0

我想我应该说'一个解决方案'。可能有更好的方法,但这种方式将适用于我的项目。 – user573225 2011-01-12 19:57:03