0

私のコード:

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.FileName = Environment.CurrentDirectory + @"\PsExec\PsExec.exe";
p.StartInfo.Arguments = @"\\server-0 cmd /c wmic process get description,executablepath";
p.Start();
string output = p.StandardOutput.ReadToEnd();
string errormessage = p.StandardError.ReadToEnd();
p.WaitForExit();

コンソール ウィンドウは閉じません。手動で閉じると、(出力に)次のように表示されます。

Description             ExecutablePath                                             

他に線が見えない!しかし、コンソールに同じことを書くと:

psexec \\server-0 cmd /c wmic process get description,executablepath

そうですか:

Description             ExecutablePath
System Idle Process
System
smss.exe
csrss.exe               C:\Windows\system32\csrss.exe
wininit.exe             C:\Windows\system32\wininit.exe
csrss.exe               C:\Windows\system32\csrss.exe
...

Thread.Sleep(...)行ごとの読み取り、、/ (呼び出されない)、-dフラグ(出力なし)、(機能しますが、コンソールウィンドウを非表示にできませんでした)...-accepteulaEnableRaisingEventsOutputDataReceivedUseShellExecute=true

(上記の C# コードで) 最初の行しか受信しないのはなぜですか? コンソールに表示されるのと同じコンテンツを受け取るには、何を変更すればよいですか?

下手な英語でごめんなさい。回答ありがとうございます。

4

1 に答える 1