从 c# 调用 powercfg /requests 会给出错误的值

问题描述 投票:0回答:3

所以我有一段代码可以使用 /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 个格式正确的响应。

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

有什么想法吗?

c# process powercfg
3个回答
1
投票

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


0
投票

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


0
投票

如果将平台目标更改为“任何 CPU”后仍然存在此问题,请检查是否选择了“首选 32 位”选项。一旦我取消选中它,它就对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.