【发布时间】:2014-09-04 06:28:16
【问题描述】:
我正在尝试从 C#.NET Process 类执行一个 .exe 文件,但我无法这样做。我能够从命令提示符成功运行 .exe。
下面是成功的命令提示符输出
我正在使用下面的 C# 代码。我没有在下面的代码之外做任何事情。
string output = string.Empty;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.WorkingDirectory = @"C:\Windows\System32";
myProcess.StartInfo.FileName = "pdftotext.exe";
myProcess.StartInfo.Arguments = " -?";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardError = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.Verb = "runas";
myProcess.Start();
using (StreamReader streamReader = myProcess.StandardOutput)
output = streamReader.ReadToEnd();
MessageBox.Show("Output = " + output);
下面是上面代码的输出。
【问题讨论】:
-
是什么让你认为exe文件在那个文件夹中? (它可以在您的
PATH中的任何位置,以便命令行使用。) -
我复制粘贴了他们的pdftotext.exe(即C:\Windows\System32\pdftotext.exe)
-
我想知道你是否得到了输出,但这根本不是你所期望的。调试时,消息框显示在哪一行;如果包含代码中的那个,则执行成功。然后,您可以使用 Process Explorer 之类的工具来查看该进程实际上是如何启动的。
-
它在代码中被提及。它正是在代码中提到的地方,即在 using 子句之后。
-
抱歉,遗漏了一点:改进您问题的文本。在任何情况下,您似乎都在接收来自 exe 的输出,您需要关注您传递给 .NET 的信息,以及这些信息是如何传递给 exe 的(所以看看它所看到的命令行参数)。
标签: .net winforms process cmd exe