【发布时间】:2015-05-19 04:36:58
【问题描述】:
如何使用我的 c# 程序中的特定参数启动 sysprep.exe?
public void cmdPrint(string[] strcommmand)
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("cd c:\\");
foreach (string str in strcommmand)
{
cmd.StandardInput.WriteLine(str);
}
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
writeLine(cmd.StandardOutput.ReadToEnd());
}
我从我的 Windows 窗体应用程序中调用它,
string[] cmd = { "cd C:\\Windows\\System32\\Sysprep", "sysprep.exe /audit /reboot"};
consoleBox1.cmdPrint(cmd);
但它似乎没有启动 sysprep.exe。我将这两个命令粘贴到 .bat 中并使用,
System.Diagnostics.Process.Start(Application.StartupPath + "\\awesome.bat");
但它也不起作用(打开一个黑色窗口并立即关闭)
从资源管理器运行 bat 文件有效,所以我想我的 c# 应用程序中缺少一些权限。
在我的 app.manifest 中,
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
是否可以启动 sysprep ?我的应用程序可以在 Windows 7、8、8.1 和 10 的普通桌面和审核模式下运行。
编辑:
我在没有完成并关闭 cmd 的情况下尝试了代码,但程序没有响应
var procInfo = new
ProcessStartInfo("C:\\Windows\\System32\\Sysprep\\sysprep.exe");
procInfo.Arguments = "/audit /reboot";
var proc = new Process();
proc.StartInfo = procInfo;
proc.Start(); //Actually executes the process
proc.WaitForExit();
给出错误:
系统找不到文件 指定/nSystem.ComponentModel.Win32Exception (0x80004005): 系统找不到指定的文件 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 在 System.Diagnostics.Process.Start() 在 Windows_SSD_Optimizer_Method_1.Method1.btn_all_Click(对象发送者, EventArgs e) in :line 182/n/n系统找不到 文件指定/nSystem.ComponentModel.Win32Exception (0x80004005): 系统找不到指定的文件 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 在 System.Diagnostics.Process.Start() 在 Windows_SSD_Optimizer_Method_1.Method1.btn_all_Click(对象发送者, EventArgs e) in :line 182/n/n
【问题讨论】:
-
为什么不直接启动 sysprep.exe?不需要运行cmd.exe
-
但是如何传递参数 /audit /reboot ?
-
cmd.StartInfo.Arguments
-
我尝试使用进程启动 sysprep.exe 但它不起作用:/
-
您的程序是否在 64 位系统上以 32 位运行,如果是,则您在错误的
system文件夹中查找。
标签: c# batch-file windows-8 64-bit sysprep