我必须在我的C#代码中启动一个可执行文件(installPrint.exe)。为此,我使用了System.Diagnostics.Process类。该exe文件安装打印机驱动程序,并将几个文件复制到不同的目录。我可以从命令行执行exe,一切正常。但是,如果我从C#应用程序的Process类执行该文件,打印机驱动程序将不会被安装。我如何在安装打印机驱动程序的C#中执行进程?
我在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());
}
是否有例外?任何错误? – Saint
我只收到打印机驱动程序无法添加的信息。安装程序还会创建本地打印机端口。这工作正常,但是当它添加打印机时,它会失败。 – CubaLibre
我发现我的失败。我setCreateNoWindow = false并使用shell执行,现在它工作。 – CubaLibre