gpt4 book ai didi

c# - 尝试使用 C# 运行命令

转载 作者:行者123 更新时间:2023-11-30 17:04:42 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,在我的工作中为新计算机自动进行一些设置。其中一项任务是更改 Windows 7 的电源选项。我正在尝试运行一个命令,该命令导入一个电源配置文件并将包含 GUID 的字符串输出返回给一个变量。当我运行该程序时,它不会向我的字符串返回任何值。我确定我搞砸了,有人可以帮忙看看吗?这是我的代码:

if(chkPowerSettings.Checked == true && radioDesktop.Checked == true)
{
//Establish the path to the power configuration file
string DesktopFileName = "WTCPowerDesktop.pow";
string CFGFileSource = @"\\\\ops-data\\Apps\\Builds";
string TargetPath = @"c:\\";

//Creates the strings for the whole path
string source = System.IO.Path.Combine(CFGFileSource, DesktopFileName);
string destination = System.IO.Path.Combine(TargetPath, DesktopFileName);

//Copies the file, the true will overwrite any already existing file
System.IO.File.Copy(source, destination, true);
System.Diagnostics.ProcessStartInfo importCFG = new System.Diagnostics.ProcessStartInfo("cmd","/c" + "powercfg –import C:\\WTCPowerDesktop.pow");
importCFG.RedirectStandardOutput = true;
importCFG.UseShellExecute = false;
importCFG.CreateNoWindow = false;
System.Diagnostics.Process runImport = new System.Diagnostics.Process();
runImport.StartInfo = importCFG;
runImport.Start();
string PowerCFGResult = runImport.StandardOutput.ReadToEnd();
MessageBox.Show(PowerCFGResult);
}

最佳答案

MSDN 文档建议等到程序从流中读取后关闭

        string DesktopFileName = "WTCPowerDesktop.pow";
string CFGFileSource = "\\\\ops-data\\Apps\\Builds";
string TargetPath = "c:\\";

//Creates the strings for the whole path
string source = System.IO.Path.Combine(CFGFileSource, DesktopFileName);
string destination = System.IO.Path.Combine(TargetPath, DesktopFileName);

//Copies the file, the true will overwrite any already existing file
System.IO.File.Copy(source, destination, true);
System.Diagnostics.ProcessStartInfo importCFG =
new System.Diagnostics.ProcessStartInfo("powercfg",
string.Format("–import {0}", TargetPath))
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = false,
};

System.Diagnostics.Process runImport = new System.Diagnostics.Process(importCFG);
runImport.Start();
string PowerCFGResult = runImport.StandardOutput.ReadToEnd();
runImport.WaitForExit(); //Add this line--
MessageBox.Show(PowerCFGResult);

但是我无法自行测试,因为我没有您正在执行的应用程序。

更新:我刚刚注意到您使用了 @ 和转义字符串 ("\\")。这也可能是个问题

关于c# - 尝试使用 C# 运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17216686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com