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 が起動しないようです。2 つのコマンドを .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): システムは、Windows_SSD_Optimizer_Method_1.Method1 の System.Diagnostics.Process.Start() で System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) で指定されたファイルを見つけることができません.btn_all_Click(Object sender, EventArgs e) in:line 182/n/nThe system cannot find the file specified/nSystem.ComponentModel.Win32Exception (0x80004005): System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo で指定されたファイルが見つかりませんstartInfo) の System.Diagnostics.Process.Start() at Windows_SSD_Optimizer_Method_1.Method1.btn_all_Click(Object sender, EventArgs e) in:line 182/n/n