Мне нужно запустить исполняемый файл (installPrint.exe) в моем коде C #.Для этого я использовал класс System.Diagnostics.Process.Exe-файл устанавливает драйвер принтера и копирует несколько файлов в разные каталоги.Я могу выполнить EXE из командной строки, и все работает нормально.Но если я выполню файл с классом Process из моего приложения C #, драйвер принтера не будет установлен.
Я запускаю свое приложение C # как пользователь с правами администратора на компьютере с Windows XP SP2 x86.Почему мой исполняемый файл не работает в контексте моего приложения на 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());
}