程序是同一个,传不同的参数运行了多个,例如程序叫A:
A 101
A 102
A 103
这样启动了3个进程,我想kill掉参数=103的如何处理?
tasklist命令看不到参数,wmic process get caption,commandline能看到参数看不到进程号,
Process[] p = Process.GetProcessesByName("A");
p[0].StartInfo.Arguments居然是空的
这在unix下一条命令就能搞定的事,服了
命令行 wmic process get processid,caption,commandline 就能看到pid了。同样的c#使用wmi也可以(需要添加对System.Management的引用),例如:
var query = "SELECT ProcessId, Caption, CommandLine FROM Win32_Process"; var searcher = new ManagementObjectSearcher(query); foreach (ManagementObject mo in searcher.Get()) { Console.WriteLine("PID={0}, Caption={1}, CommandLine={2}", mo["ProcessId"], mo["Caption"], mo["CommandLine"]); }
taskkill /FI "A 103" /F
1. 用勾子做,调系统API。
2. 你kill的程序在title里加上你的参数,然后获取判断。