从进程对象获取进程的"Command Line"和参数?



在我的Win7任务管理器中,有一个名为"Command Line"的列可以显示进程是如何启动的以及所有的参数是如何发布的。如果我有一个当前运行的进程的Process对象,而这个进程不是我启动的,我怎么能得到这个信息呢?我希望我能做一些像p.StartInfo.Arguments的东西,但它总是返回一个空字符串。整个StartInfo属性似乎是空的,可能是因为我没有启动我正在查询的进程。我猜我将不得不使用WinAPI调用

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

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

相关内容

最新更新