2013-05-22 2 views
5

В моем диспетчере задач Win7 есть столбец, который может отображаться под названием «Командная строка», и покажет, как именно был запущен процесс и все выданные параметры. Если у меня есть объект Process для текущего процесса, который я не запускал, как я могу получить эту информацию? Я надеялся, что смогу сделать что-то вроде p.StartInfo.Arguments, но это всегда возвращается как пустая строка. Весь объект StartInfo кажется пустым, возможно, потому, что я не начал процесс, который я запрашиваю. Я предполагаю, что мне придется использовать вызов WinAPI.Получить «Командную строку» процесса и аргументы из объекта «Процесс»?

ответ

8

Ну вы можете использовать WMI, есть класс, который может быть queryied для получения списка процессов и каждый объект также содержит свойство для командной строки, которая начала процесс

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

+1, а также увидеть HTTP : //social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/8efe163b-927e-4895-9983-b8c47b515d7c/ для хорошего разбиения этого метода. – HerrJoebob

+0

Спасибо @HerrJoebob, теперь я понял, что я забыл. Код можно укоротить простым 'mo [" CommandLine "]' – Steve

Смежные вопросы