2013-05-22 14 views
5

私のWin7タスクマネージャには、「コマンドライン」と表示される列があり、プロセスの開始方法と発行されたすべてのパラメータが正確に表示されます。現在起動していないプロセスのオブジェクトがProcessの場合、どうすればその情報を取得できますか?私はp.StartInfo.Argumentsのようなことができることを期待していましたが、それは常に空の文字列として戻ってきます。 StartInfoプロパティ全体が空に見えます。おそらく、私が照会しているプロセスを開始しなかったからです。私はWinAPI呼び出しを使用する必要があると推測しています。Processオブジェクトの「コマンドライン」と引数を取得しますか?

答えて

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