質問: @"C:\tmp"; proc.Start(); ``` ### 補足情報(言語/FW/ツール等のバージョンなど) Microsoft Visual Studio Community 2017 Version 15.0.26228.9 D15RTWSVC Microsoft .NET Framework Version 4.6.01586 です。 よろしくお願いします。
回答: StartInfo.Argumentsは起動するプロセスに与える引数ですね。 開始ディレクトリはStartInfo.WorkingDirectoryで指定します。 ``` Process proc = new Process(); proc.StartInfo.FileName = "cmd.exe"; proc.StartInfo.UseShellExecute = true; proc.StartInfo.WorkingDirectory = @"C:\tmp"; proc.Start(); ``` 単にコマンドプロンプトを起動する場合は上記のソースコードで動作します。 ただし、管理者として実行するとこちらもC:\WINDOWS\system32になってしまいました。 次のようにすると、管理者として実行でも開始ディレクトリ指定に対応できました。 ``` Process proc = new Process(); proc.StartInfo.FileName = "cmd.exe"; proc.StartInfo.Verb = "runas"; proc.StartInfo.UseShellExecute = true; proc.StartInfo.Arguments = @"/K cd C:\tmp"; proc.Start(); ``` こちらはStartInfo.Argumentsを使ってコマンドプロンプトに引数を与えて、`cmd.exe /K cd C:\tmp` を実行するようにしています。 意味としては、カレントディレクトリを変更するcdコマンドを実行(C:\tmpに移動)し、/Kオプションを指定しているためコマンド実行後にコマンドプロンプトを終了しない、というものです。