无法使用 C# 代码运行 .exe 应用程序
Posted
技术标签:
【中文标题】无法使用 C# 代码运行 .exe 应用程序【英文标题】:Unable to run .exe application using C# code 【发布时间】:2010-03-31 04:06:24 【问题描述】:我有一个 exe,需要从我的 C# 程序中调用,并带有两个参数(PracticeId、ClaimId)
例如:
假设我有一个应用程序test.exe
,其功能是根据给定的两个参数进行声明。
在 cmd 上,我通常会给出以下命令:
test.exe 1 2
它工作正常并执行其转换工作。
但我想使用我的 c# 代码执行相同的操作。 我正在使用以下示例代码:
Process compiler = new Process();
compiler.StartInfo.FileName = "test.exe" ;
compiler.StartInfo.Arguments = "1 2" ;
compiler.StartInfo.UseShellExecute = true;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();
当我尝试使用上述代码调用test.exe
时,它无法执行其创建声明txt 文件的操作。
这其中的问题在哪里?是不是线程问题,我不知道。
谁能告诉我我需要在上面的代码中更改什么?
【问题讨论】:
你确定“test.exe”正在被执行吗?如果我必须打赌,我敢打赌它根本不会被执行。 【参考方案1】:您提供的代码在我运行时失败并出现以下错误:
System.InvalidOperationException
Process 对象必须具有 UseShellExecute 属性设置为 false 为了重定向 IO 流。
以下代码正确执行并传递参数:
var compiler = new Process();
compiler.StartInfo.FileName = "test.exe";
compiler.StartInfo.Arguments = "1 2";
compiler.StartInfo.UseShellExecute = true;
compiler.StartInfo.RedirectStandardOutput = false;
compiler.Start();
【讨论】:
msg 说“进程对象必须将 UseShellExecute 属性设置为 false 才能重定向 IO 流”但您的代码使用 true? 正确,所以我还通过设置RedirectStandardOutput = false
禁用了重定向。这样才开心【参考方案2】:
虽然我还没有测试我的代码,但我希望这能帮助你做你想做的事......
Process.Start("xyz.exe", "1 2");
让我知道它是否有效。
【讨论】:
【参考方案3】:检查您的工作目录是什么。 test.exe 在你的路径中吗?如果没有,您将需要提供路径。如果您知道路径在哪里,最好提供路径。您可以从应用程序路径、程序集执行路径或某些用户偏好设置中动态构建它。
【讨论】:
【参考方案4】:MSDN 应该会有所帮助。他们看起来好像对网站进行了一些更新,并且针对您的特定问题的示例非常详细。
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
【讨论】:
以上是关于无法使用 C# 代码运行 .exe 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
从 C# windows 应用程序调用 C dll 会导致 svchost.exe 崩溃
与任务调度程序一起使用的应用程序无法在我的 C# 代码中创建目录