c#调用进程“找不到指定的文件”

时间:2010-05-25 16:33:25

标签: c#

我是一名新手,所以请耐心等待。我试图从一个c#app中调用来自PsTools的“pslist”,但我一直得到“系统找不到指定的文件”。我以为我在谷歌的某个地方看到exe应该在c:\ windows \ system32中,所以我试过了,仍然没有。即使尝试c:\ windows \ system32 \ PsList.exe的完整路径也无法正常工作。我可以打开记事本或注册表等其他内容。有什么想法吗?

C:\WINDOWS\system32>dir C:\WINDOWS\SYSTEM32\PsList.exe
 Volume in drive C has no label.
 Volume Serial Number is ECC0-70AA

 Directory of C:\WINDOWS\SYSTEM32

04/27/2010  11:04 AM           231,288 PsList.exe
               1 File(s)        231,288 bytes
               0 Dir(s)   8,425,492,480 bytes free
    try
    {
        // Start the child process.
        Process p = new Process();
        // Redirect the output stream of the child process.
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;

        //This works
        //p.StartInfo.FileName = @"C:\WINDOWS\regedit.EXE";

        //This doesn't
        p.StartInfo.FileName = @"C:\WINDOWS\system32\PsList.exe";
        p.Start();

        // Do not wait for the child process to exit before
        // reading to the end of its redirected stream.
        p.WaitForExit();
        // Read the output stream first and then wait.
        s1 = p.StandardOutput.ReadToEnd();
        p.WaitForExit();

    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception Occurred :{0},{1}",
        ex.Message, ex.StackTrace.ToString());
        Console.ReadLine();
    }

1 个答案:

答案 0 :(得分:1)

除非确实需要,否则你不应该首先这样做。

相反,请使用Process class 您可以通过调用Process.GetProcesses

来获取所有当前正在执行的进程

要获取单个进程的内存使用情况,请检查Process对象的WorkingSet64 property
要获取单个进程的CPU使用率use Performance Counters