想要编写Windows WMI(wmiprvse.exe)脚本以释放文件句柄

时间:2008-11-19 15:41:51

标签: scripting windows-services wmi

我正在使用由其他人编写的VB脚本文件,该脚本使用Windows Management Instrumentation(WMI)调用来检查多个Windows服务的状态。此脚本按设定的计划每隔几分钟运行一次。我需要为这些服务升级/替换.exe。

我停止VB脚本,停止服务并卸载服务,使它们不再出现在“服务”面板(services.msc)中。不幸的是,WMI(wmiprvse.exe)仍然具有服务.exe文件的句柄。我可以通过重新启动系统来释放句柄,但我想尽可能避免这种情况,这样就可以完全编写脚本/自动升级。

有没有办法可以强制WMI释放它在.exe上的句柄?请记住,我刚接触WMI。

2 个答案:

答案 0 :(得分:1)

我也在寻找这个问题的解决方案。还想了解为什么wmiprsve会处理我的某些服务可执行文件,而不是其他服务可执行文件。

我正在使用的解决方法是杀死wmiprvse进程。您可以使用SysInternals命令行工具(pslist,pskill)自动获取进程ID并执行kill。

答案 1 :(得分:0)

您只需重新启动WMI服务(winmgmt)即可强制它释放您的文件。如果您的服务在WMI启动时未注册,则无法锁定文件。

停止服务,卸载服务,重启WMI,替换文件,启动服务。