我正在使用Visual Studio Clickones,并尝试执行(.appref-ms) application
并使用RedirectStandardOutput
...
我必须使用选项"Prefer 32-bit"
,因为我正在使用Access DB,连接字符串为Provider=Microsoft.Jet.OLEDB.4.0.
这是我的执行代码:
var p = new Process();
p.StartInfo = new ProcessStartInfo(@"C:\Users\hed-b\Desktop\PulserTester.appref-ms")
{
RedirectStandardOutput = true,
UseShellExecute = false
};
p.Start();
reportNumber = p.StandardOutput.ReadToEnd();
p.WaitForExit();
这是我遇到的错误
System.ComponentModel.Win32Exception:'指定的可执行文件不是 此OS平台的有效应用程序。'
编辑
通过看这里,我可以通过cmd运行它
为
var proc = Process.Start(@"cmd.exe ",@"/c C:\Users\hed-b\Desktop\PulserTester.appref-ms")
但是如何以这种方式使用RedirectStandardOutput?
答案 0 :(得分:3)
看起来您打算启动CMD并运行命令,但是您的代码只是尝试将该命令作为应用程序运行。
尝试这样的事情。
var p = new Process();
p.StartInfo = new ProcessStartInfo(@"cmd.exe")
{
RedirectStandardOutput = true,
UseShellExecute = false,
Arguments = "/c C:\Users\hed-b\Desktop\PulserTester.appref-ms"
};
p.Start();
reportNumber = p.StandardOutput.ReadToEnd();
p.WaitForExit();
使用阻塞ReadToEnd
将在代码运行时暂停线程,并使捕获错误输出也更加困难-请查看此答案,以演示同时捕获标准数据和标准的非阻塞解决方案错误:ProcessInfo and RedirectStandardOutput