30

別のプロセスのコマンド ライン引数を取得するにはどうすればよいですか?

クラスの静的関数を使用してSystem.Diagnostics.Process、実行中のプロセスのリストを名前などで取得できます。

Process[] processList = Process.GetProcessesByName(processName);

ただし、このプロセスを開始するために使用されるコマンド ラインにアクセスする方法はありません。どうすればそれを行うことができますか?

4

4 に答える 4

56

Start メソッドを使用してプロセスを開始しなかった場合、StartInfo プロパティは、プロセスの開始に使用されたパラメーターを反映しません。たとえば、GetProcesses を使用してコンピューター上で実行されているプロセスの配列を取得する場合、各 Process の StartInfo プロパティには、プロセスの開始に使用された元のファイル名または引数は含まれません。(出典: MSDN )

Stuart の WMI の提案は良いものです。

string wmiQuery = string.Format("select CommandLine from Win32_Process where Name='{0}'", processName);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection retObjectCollection = searcher.Get();
foreach (ManagementObject retObject in retObjectCollection)
    Console.WriteLine("[{0}]", retObject["CommandLine"]);
于 2009-02-02T18:45:42.210 に答える
1

Process.StartInfoArguments プロパティに引数があるとされているが必ずしもそうではないProcessStartInfoオブジェクトを返します。

于 2009-02-02T18:14:34.147 に答える