C#でプログラム起動用のコマンドラインパラメータ文字列を作成する方法


お世話になります。  
C#でコマンドラインパラメータを指定して、外部のプログラムを実行しようとしています。  
ただ、この際のコマンドラインパラメータの作成がわからずにいます。  
現在作成中のプログラムでは、パラメータを配列で管理しており、それをそのまま渡せないかと思ったのですが、やはり「Process.Start」では文字列しか受け入れてくれないようです。  
そこで、下記のようにスペースで連結して渡すようにしました。

[code]

    string[] args;
    args = new string[3] {"A", "B", "C D"};
    Process process = Process.Start(@"C:\test\test.exe", String.Join(" ", args));
    
[/code]

ただ、これだと、空白が入った行をクォーテーションで囲んでくれたりはしないので、問題があります。  
やはりforeachで空白が入ってるかどうかを調べて、クォーテーションで囲むという作業を地道に行う必要があるでしょうか。  
また、もしかして他にもコマンドラインパラメータで何か特殊なものがあったりするでしょうか。  
ざっくりとした質問で申し訳ありませんが、教えていただけますと幸いです。  
なお、環境はWindows10 20H2 64ビットで、.netFramework4.5で動くアプリケーションを作成しています。  
以上、よろしくお願いいたします。




.NET Core 2.1以上だと [ProcessStartInfo.ArgumentList
プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.diagnostics.processstartinfo.argumentlist?view=netcore-3.1)
が使えるようですが、.NET Framework 4.5 では[ProcessStartInfo.Arguments
プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.diagnostics.processstartinfo.arguments?view=netframework-4.5)のみのようなので、地道に処理するしかないようです。

ただし、こんな記事を見つけました。処理を作って公開してくれた人が居るようです。  
[Escaping an array of command-line arguments in
C#](http://gfxmonk.net/2014/04/25/escaping-an-array-of-command-line-arguments-
in-csharp.html)  
上記のGitHub  
[timbertson/csharp-quote-argv](https://github.com/timbertson/csharp-quote-
argv)

日本でそのまま使えるかどうかは不明ですが、試してみても良いのでは？

使えるなら、MIT Licenseということなので、そのまま使うか参考にして自作するかはご自由に。

* * *

ちなみにS.O.英語版に以下記事があり、例や情報量が多そうなので参考になるかも。  
[Backslash and quote in command-line
arguments](https://stackoverflow.com/q/9287812/9014308)




.NET Core 2.1以上だと [ProcessStartInfo.ArgumentList
プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.diagnostics.processstartinfo.argumentlist?view=netcore-3.1)
が使えるようですが、.NET Framework 4.5 では[ProcessStartInfo.Arguments
プロパティ](https://docs.microsoft.com/ja-
jp/dotnet/api/system.diagnostics.processstartinfo.arguments?view=netframework-4.5)のみのようなので、地道に処理するしかないようです。

ただし、こんな記事を見つけました。処理を作って公開してくれた人が居るようです。  
[Escaping an array of command-line arguments in
C#](http://gfxmonk.net/2014/04/25/escaping-an-array-of-command-line-arguments-
in-csharp.html)  
上記のGitHub  
[timbertson/csharp-quote-argv](https://github.com/timbertson/csharp-quote-
argv)

日本でそのまま使えるかどうかは不明ですが、試してみても良いのでは？

使えるなら、MIT Licenseということなので、そのまま使うか参考にして自作するかはご自由に。

* * *

ちなみにS.O.英語版に以下記事があり、例や情報量が多そうなので参考になるかも。  
[Backslash and quote in command-line
arguments](https://stackoverflow.com/q/9287812/9014308)

