1

所以我有一段代码可以使用 /requests 选项调用 powercfg 并从标准输出中获取结果。

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "powercfg";
p.StartInfo.Arguments = "/requests";
p.Start();

string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

但是,当我运行此代码时,我得到的输出与在命令行上运行相同命令时完全不同。

在代码版本的情况下,我只得到“[DRIVER] ?”的负载。值回来了,但在命令行上,我通常会得到 2 或 3 个格式正确的响应。

我已经从与具有相同环境的相同用户相同的命令提示符窗口运行我的代码,但仍然没有乐趣。

有任何想法吗 ?

4

2 回答 2

0

它可能与您的应用程序在其中运行的用户上下文有关,例如,如果您以管理员身份运行您的应用程序,Process.Start 将尝试在相同的上下文中启动该进程。

于 2013-02-20T14:06:54.653 回答
0

所以实际原因是我的应用程序需要为“任何 CPU”编译。将其设置为 x86 或 x64 会导致加载依赖库之一的正确版本时出现问题。

于 2013-02-21T10:51:44.020 回答