.NET から cmd コマンドを実行しようとしており、find cmd コマンドをパイプとして使用しています。しかし、find cmd コマンドは文字列で値を取得しますが、二重引用符を使用する代わりに文字列変数を作成すると、/"" に置き換えられます。
私の文字列変数は "/c sc QUERY ServiceName | find \"START\"" であり、"/c sc QUERY ServiceName | find "START"" を渡す代わりに、これを cmd シェルに渡します。"/c sc QUERY ServiceName | find \ "START\"" で、検索コマンドが失敗します。
以下は私の.NETコードです
string cmdstr = "/c sc QUERY ServiceName | find \"START\"";
Process prc = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = cmdstr;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
prc.StartInfo = startInfo;
prc.Start();
string result;
result = prc.StandardOutput.ReadToEnd();
prc.WaitForExit(10);
コードをデバッグすると、cmdstr 値に二重引用符が含まれていませんが、\" が含まれています。