从Process对象获取Process“Command Line”和参数?

时间:2013-05-22 21:43:18

标签: c# winapi

在我的Win7任务管理器中,可以显示一个名为"命令行"的列。并将准确显示过程如何启动以及所有参数的发布。如果我没有启动当前正在运行的进程的Process对象,我该如何获取该信息?我曾希望我可以做p.StartInfo.Arguments这样的事情,但总是以空字符串的形式回来。整个StartInfo属性似乎是空的,可能是因为我没有启动我查询的过程。我猜我将不得不使用WinAPI电话。

1 个答案:

答案 0 :(得分:9)

你可以使用WMI,有一个类可以被查询以检索进程列表,每个对象也包含启动进程的命令行的属性

string query = "SELECT Name, CommandLine, ProcessId, Caption, ExecutablePath " + 
               "FROM Win32_Process";
string wmiScope = @"\\your_computer_name\root\cimv2";
ManagementObjectSearcher searcher = new ManagementObjectSearcher (wmiScope, query);
foreach (ManagementObject mo in searcher.Get ()) 
{
    Console.WriteLine("Caption={0} CommandLine={1}", 
             mo["Caption"], mo["CommandLine"]);
}