2

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

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

有没有办法强制 WMI 释放它在 .exe 上的句柄?请记住,我是使用 WMI 的新手。

4

2 回答 2

1

我也在寻找解决这个问题的方法。还想了解为什么 wmiprsve 对我的一些服务可执行文件有句柄,但对其他可执行文件没有。

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

于 2008-11-19T15:54:33.623 回答
0

您可以简单地重新启动 WMI 服务 (winmgmt) 以强制它释放您的文件。如果您的服务在 WMI 启动时未注册,则不会锁定文件。

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

于 2014-07-11T08:37:52.543 回答