从batch file中杀死Windows 16位进程

我有这种情况,一台装有Windows XP的旧电脑正在作为一个系统的服务器,并且有可能在出现问题时向我发送警报。 但是,我们使用的这个服务器程序确实是很麻烦的,并且在某个特定的时刻可以停止关注警报。 然后,这些警报就会堆积起来,并且在程序最终重新启动时立即全部发送。 这使得这些警报很无用,因为当你重启程序的时候,你已经知道系统有问题了。

我所瞄准的解决scheme是,Windows任务计划程序可以每天晚上杀死,然后重新启动一个简单的batch file的帮助程序。 我似乎无法find杀死进程的方法,因为程序的进程是作为Windows进程csrss.exe的subprocess运行的。

如果我打开taskmanager,我可以看到进程并杀死它,但是命令tasklist只显示父进程csrss.exe,我需要PID用taskkill杀死它。 是的, tasklist确实有额外的参数/t杀死subprocess,但我需要一种方法来杀死subprocess,并离开Windows csrss.exe显然必不可less的运行。

所以我的问题是:有谁知道如何杀死一个batch file的帮助下的subprocess?

这当然可以通过编写一个特定的程序来完成,然后让batch file使用该程序,但我希望能够快速修复。

到目前为止我有:

 TASKLIST /FI "IMAGENAME eq program.exe" 2>NUL | FIND /I /N "program.exe">NUL IF NOT %ERRORLEVEL%==0 GOTO :restart TASKKILL /FI "IMAGENAME eq program.exe" /F /T :restart START /D "C:\path\" program.exe 

编辑:

我只是意识到,一个进程的图像名称是不是在任务pipe理器缩进,因为它是另一个进程的subprocess,但是因为它是一个16位进程(多直观)。 所以,这是一个16位的进程,现在的问题是如何find一个PID来杀死一个16位的进程。 正如我所提到的,任务列表不会显示它,也不是pslist

我想我已经设法解决了我的问题,而我将这里留给任何可能遇到类似问题的人。

我试图杀死进程ntvdm.exe,因为它是由tasklisttaskkill “可及”,因为谷歌搜索显示它是Windows的虚拟机,让16位程序运行在32位系统上。 我第一次试图杀死它,而不是强迫它,但只杀死ntvdm.exe,而不是16位进程本身。 强制它似乎工作正常,但我不会推荐这个解决方案(出于显而易见的原因)在任何地方有多个重要的16位进程运行。

我终于使用的命令是:

 TASKKILL /FI "IMAGENAME eq ntvdm.exe" /F /T