web-dev-qa-db-ja.com

なぜProcess.Start( "cmd.exe"、process);を行うのですか?うまくいかない?

これは機能します:

Process.Start("control", "/name Microsoft.DevicesAndPrinters");

しかし、これはしません:(コマンドプロンプトを開くだけです。)

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "control /name Microsoft.DevicesAndPrinters";
Process.Start(info);

どうして?

(はい、私はそれらが同一ではないことを知っています。しかし、2番目のものは「動作するはずです」。)

15
ispiro

これは、cmd.exe/Kスイッチに引数として渡されたプロセスを実行することを期待しているためです。以下のコードを試してください

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/K control /name Microsoft.DevicesAndPrinters";
Process.Start(info);

編集:上記の/Kに変更されました。コマンドの実行後に/Cを閉じる場合は、cmd.exeスイッチを使用できます。

35
ryadavilli

コマンドを実行するには、/cまたは/kスイッチ(cmd.exeのオプション)が必要です。試してください:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/c control /name Microsoft.DevicesAndPrinters";
Process.Start(info);
7
SWeko

これをお試しください

ProcessStartInfo info = new ProcessStartInfo("control");
info.Arguments = "/name Microsoft.DevicesAndPrinters";
Process.Start(info);
1
yogi