1

私は非常に奇妙な問題を抱えています。Blat.exeをc:/windows/system32フォルダに入れてインストールしたところ、コマンドラインから完全に実行できました。

C# からプログラムで実行するとProcess.Start("cmd", "blat.exe blah blah")、エラーが返されます

「blat.exe」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

私もフルパスを与えようとしましたが、返信するだけです

c:/Windows/System32/blat.exe」が認識されません...

アイデアや提案はありますか?よろしくお願いします。

4

2 に答える 2

0

に有効な引数を渡していませんcmdここにいくつかのドキュメントがあります。

基本的に、blat.exe を実行して終了する必要があるという引数で cmd を起動する場合は、 を渡す必要があります/C "blat.exe blah blah"。そのようです:

Process.Start("cmd", "/C \"blat.exe blah blah\"")

ただし、誰かがコメントで既に述べているように、blat.exe を直接実行することもできます。

于 2015-09-08T07:59:07.133 に答える
0

Damien_The_Unbeliever は正しかったと思います。Blat を Windows ディレクトリから c:/blat/blat.exe に移動しただけで、正常に動作します。完全を期すために、前の何とか、何とか何とか、すみません、失敗していたコマンドは

        static void ExecuteCommandSync(object command)
    {
        try
        {
            System.Diagnostics.ProcessStartInfo procStartInfo =
                new System.Diagnostics.ProcessStartInfo(@"C:/Windows/System32/blat.exe", "-server 127.0.0.1:1099 -subject Hello -to myname@gmail.com -body theBody -p gmailsmtp -from myname@gmail.com");
            System.Diagnostics.Process process;
            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.RedirectStandardError = true;
            procStartInfo.UseShellExecute = false;
            procStartInfo.CreateNoWindow = true;
            process = System.Diagnostics.Process.Start(procStartInfo);
            process.WaitForExit();
            var output = process.StandardOutput.ReadToEnd();
            var error = process.StandardError.ReadToEnd();
            var exitCode = process.ExitCode;
            Console.WriteLine(error);
            process.Close();
        }
        catch (Exception objException)
        {
            // to be logged
        }
    }

cmd.exe /cc:/Windows/System32/blat.exe を使用したバリエーションも同様に失敗しました。ご協力ありがとうございました

于 2015-09-08T12:26:34.973 に答える