これは機能します:
Process.Start("control", "/name Microsoft.DevicesAndPrinters");
しかし、これはしません:(コマンドプロンプトを開くだけです。)
ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "control /name Microsoft.DevicesAndPrinters";
Process.Start(info);
どうして?
(はい、私はそれらが同一ではないことを知っています。しかし、2番目のものは「動作するはずです」。)
これは、cmd.exe
が/K
スイッチに引数として渡されたプロセスを実行することを期待しているためです。以下のコードを試してください
ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/K control /name Microsoft.DevicesAndPrinters";
Process.Start(info);
編集:上記の/K
に変更されました。コマンドの実行後に/C
を閉じる場合は、cmd.exe
スイッチを使用できます。
コマンドを実行するには、/c
または/k
スイッチ(cmd.exe
のオプション)が必要です。試してください:
ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/c control /name Microsoft.DevicesAndPrinters";
Process.Start(info);
これをお試しください
ProcessStartInfo info = new ProcessStartInfo("control");
info.Arguments = "/name Microsoft.DevicesAndPrinters";
Process.Start(info);