C#PsExec获取进程列表:名称,路径

时间:2013-07-06 02:54:10

标签: c# process psexec

我的代码:

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(...),每行阅读,-accepteulaEnableRaisingEvents / OutputDataReceived(它不会调用), - d标志(无输出) ,UseShellExecute=true(有效,但我无法隐藏控制台窗口)......

为什么我只收到第一行(在上面的C#代码中)?我应该更改什么才能收到我在控制台中看到的相同内容?

抱歉英语不好。谢谢你的回答。

1 个答案:

答案 0 :(得分:-1)

使用委派。收到输出上升事件并捕获数据。我做了同样的