C# 获取过程';s";命令行“;和进程对象的参数?

C# 获取过程';s";命令行“;和进程对象的参数?,c#,winapi,C#,Winapi,在我的Win7任务管理器中,有一列可以显示,称为“命令行”,它将准确显示进程是如何启动的以及所有参数是如何发出的。如果我有一个进程对象用于当前运行的进程,但我没有启动该进程,那么如何获取该信息?我曾希望我可以做一些类似于p.StartInfo.Arguments的事情,但那总是以空字符串的形式出现。整个StartInfo属性似乎是空的,可能是因为我没有启动正在查询的进程。我猜我将不得不使用WinAPI调用。您可以使用WMI,可以查询一个类来检索进程列表,并且每个对象还包含启动进程的命令行的属性

在我的Win7任务管理器中,有一列可以显示,称为“命令行”,它将准确显示进程是如何启动的以及所有参数是如何发出的。如果我有一个
进程
对象用于当前运行的进程,但我没有启动该进程,那么如何获取该信息?我曾希望我可以做一些类似于
p.StartInfo.Arguments
的事情,但那总是以空字符串的形式出现。整个
StartInfo
属性似乎是空的,可能是因为我没有启动正在查询的进程。我猜我将不得不使用WinAPI调用。

您可以使用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"]);
}

+1,另请参阅此方法的详细说明。谢谢@HerrJoebob,现在我知道我忘记了什么。只需使用
mo[“命令行”]