質問: Process.Start(@"C:\test\test.exe", String.Join(" ", args)); ``` ただ、これだと、空白が入った行をクォーテーションで囲んでくれたりはしないので、問題があります。 やはりforeachで空白が入ってるかどうかを調べて、クォーテーションで囲むという作業を地道に行う必要があるでしょうか。 また、もしかして他にもコマンドラインパラメータで何か特殊なものがあったりするでしょうか。 ざっくりとした質問で申し訳ありませんが、教えていただけますと幸いです。 なお、環境はWindows10 20H2 64ビットで、.netFramework4.5で動くアプリケーションを作成しています。 以上、よろしくお願いいたします。
回答: .NET Core 2.1以上だと ProcessStartInfo.ArgumentList プロパティ が使えるようですが、.NET Framework 4.5 ではProcessStartInfo.Arguments プロパティのみのようなので、地道に処理するしかないようです。 ただし、こんな記事を見つけました。処理を作って公開してくれた人が居るようです。 Escaping an array of command-line arguments in C# 上記のGitHub timbertson/csharp-quote-argv 日本でそのまま使えるかどうかは不明ですが、試してみても良いのでは? 使えるなら、MIT Licenseということなので、そのまま使うか参考にして自作するかはご自由に。 ちなみにS.O.英語版に以下記事があり、例や情報量が多そうなので参考になるかも。 Backslash and quote in command-line arguments