【发布时间】:2011-09-28 07:51:37
【问题描述】:
我必须在我的 C# 代码中启动一个可执行文件 (installPrint.exe)。为此,我使用了 System.Diagnostics.Process 类。 exe 文件安装打印机驱动程序并将多个文件复制到不同的目录中。我可以从命令行执行exe,一切正常。但是如果我从我的 C# 应用程序中使用 Process 类执行文件,则不会安装打印机驱动程序。
我以管理员用户身份在 Windows XP SP2 x86 机器上启动我的 C# 应用程序。为什么我的可执行文件不能在我的 C# 应用程序的上下文中工作?我有什么可能让它发挥作用?
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = "-i \"My Printer\" -dir . -port myPort -spooler";
startInfo.CreateNoWindow = true;
startInfo.FileName = @"C:\Printer\install.exe";
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
//startInfo.Verb = "runas";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.WorkingDirectory = @"C:\Printer\";
session.Log("Working Directory: " + startInfo.WorkingDirectory);
session.Log("Executing " + startInfo.FileName);
try
{
Process process = new Process();
//process.EnableRaisingEvents = false;
process.StartInfo = startInfo;
process.Start();
session.Log("installer.exe started");
StreamReader outReader = process.StandardOutput;
StreamReader errReader = process.StandardError;
process.WaitForExit();
//session.Log(outReader.ReadToEnd());
//session.Log(errReader.ReadToEnd());
session.Log("RETURN CODE: " + process.ExitCode);
}
catch (Exception ex)
{
session.Log("An error occurred during printer installation.");
session.Log(ex.ToString());
}
【问题讨论】:
-
我只得到无法添加打印机驱动程序的信息。安装程序还会创建一个本地打印机端口。这工作正常,但在添加打印机时它失败了。
-
我发现了我的失败。我 setCreateNoWindow = false 并使用了 shell 执行,现在它可以工作了。
标签: c# .net visual-studio-2010 printers