所以我有一大块代码用/ requests选项调用powercfg并从stdout返回结果。
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个正确形成的响应。
我在相同的命令提示符窗口中运行我的代码与具有相同环境的同一用户,仍然没有乐趣。
有什么想法吗?
答案 0 :(得分:0)
它可能与运行应用程序的用户上下文有关,例如,如果您以管理员身份运行应用程序,Process.Start将尝试在相同的上下文中启动该进程。
答案 1 :(得分:0)
所以实际的原因是我的应用程序需要为“任何CPU”编译。将其设置为x86或x64会导致加载其中一个依赖库的正确版本的问题。