У меня проблемы с System.Diagnostics.Process.Start()
.
Когда я запускаю сторонний установщик (пакет MSI, завернутый в исполняемый файл), он устанавливается без проблем, когда запускается двойным щелчком поexe или вызывается из командной строки.
Однако, когда я запускаю его из приложения с помощью Process.Start()
, программа установки завершается ошибкой с кодом ошибки 5 = доступ запрещен.В журналах говорится, что он не работает, потому что он не может восстановить некоторые параметры реестра.
Кто-нибудь знает разницу (в плане безопасности) между двойным щелчком по exe и запуском процесса из приложения?Пользователь работает как администратор.
Пример кода:
var info = new ProcessStartInfo();
info.FileName = @"C:\MyFolder\setup.exe";
info.UseShellExecute = false; // I have tried both true and false here
Process p = Process.Start(info);
p.WaitForExit();
if (p.ExitCode != 0)
{
// Do something...
}
ОБНОВЛЕНИЕ:
Я поместил код выше в небольшом консольном приложении, и он работал,Очевидно, что в основном приложении происходило что-то подозрительное ...
Оказалось, я забыл закрыть некоторые ключи реестра.Сбой установки, так как он пытался получить доступ к тем же ключам.Как только я правильно закрыл ключи, код заработал.
Извините, ребята.Позор мне.