我有一个非常奇怪的问题。我通过将其放入文件夹中安装了blat.exe,c:/windows/system32并且可以从命令行完美运行它。
当我从 C# 以编程方式运行它时,Process.Start("cmd", "blat.exe blah blah")它返回错误
'blat.exe' 不是内部或外部命令、可运行程序或批处理文件。
我也试过给出完整的路径,但它只会回复
c:/Windows/System32/blat.exe' 无法识别...
你有什么想法/建议吗?提前非常感谢。
我会说 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 的变体同样失败。非常感谢您的帮助
您没有将有效参数传递给cmd. 这是一些文档。
基本上,如果你想用它应该运行 blat.exe 然后终止的参数来启动 cmd,你需要通过/C "blat.exe blah blah". 像这样:
Process.Start("cmd", "/C \"blat.exe blah blah\"")
但是,正如评论中已经有人说的那样,您不妨直接运行 blat.exe。