要使用可执行路径终止 Windows 上正在运行的进程,我可以使用以下任一方法:
wmic process where ExecutablePath='C:\\path\\to\\my.exe' delete
或者:
wmic process where ExecutablePath='C:\\path\\to\\my.exe' call terminate
如果有的话,这两种方法之间有何实际区别?
答案1
使用call terminate
,我们可以传递退出状态,例如call terminate '-1073741510'
。32 位状态值必须带符号,负值需要用引号引起来。后者的值为STATUS_CONTROL_C_EXIT
(0xC000013A),为带符号的十进制值。默认退出状态为 0,与动词使用的值相同delete
。
在实现方面,WMI 服务启动 WMI 提供程序主机 (wmiprvse.exe) 的一个实例来处理请求。附加调试器来检查这一点相对容易,因为提供程序主机进程会重复使用几分钟。Win32_Process
类在 WMI Win32 提供程序模块 (cimwin32.dll) 中实现,该模块包含一个具有和方法的Process
类,分别称为和。 这两个方法最终都调用 WINAPI 。DeleteInstance
ExecTerminate
delete
call terminate
TerminateProcess