2014-09-18 4 views
2

Я могу найти много тем, обсуждающих Process.Start, но ни одного, который звучит как мой. Код, приведенный ниже, работает в течение многих лет на Windows Server 2003 & 2008. Теперь я пытаюсь установить одно и то же приложение в 2012 году, но, хотя «My.exe» запускается, сам Process.Start зависает, поэтому «Started» никогда не регистрируется. Может ли кто-нибудь сказать, в чем проблема?Process.Start зависает на сервере 2012

Большое спасибо заранее,

Майкл

ProcessStartInfo psi = new ProcessStartInfo("C:\\My.exe"); 
psi.UseShellExecute = false; 
psi.LoadUserProfile = false; 
psi.WindowStyle = ProcessWindowStyle.Normal; 
psi.ErrorDialog = false; 
if (Environment.OSVersion.Version.Major >= 6) psi.Verb = "runas"; 
psi.Arguments = "\"MyArgs\""; 
psi.RedirectStandardError = true; 
psi.RedirectStandardOutput = true; 
_logger.Info("Starting"); 
_process = Process.Start(psi); 
_logger.Info("Started"); 

ответ

0

Возможно, то же самое, как this?

предполагая также, что

"C: \ My.exe"

опечатка = "C: \\ My.exe" или @ "C: \ My.exe"

+0

К сожалению, это была опечатка. – user3306282

+0

Ссылка, если я правильно ее понимаю, является проблемой, когда WaitForExit зависает. Я не использую этот метод и не могу его использовать, поскольку сначала мне нужен объект Process, который я не получаю, поскольку Process.Start никогда не возвращается. – user3306282

+0

Я бросил ваш образец в приложение WinForm и запустил его под VMware Server 2012 - заменил My.exe на cmd.exe и удалил аргумент. Код работает как администратор, так и обычный пользователь - может быть, проблема с программой «My.exe»? – jman

0

Я считаю, что глагол «runas» для интерактивного запроса административных разрешений работает только тогда, когда ProcessStartInfo.UseShellExecute = true, предполагая, что приложение запускается в интерактивном режиме, и вы хотите, чтобы использование было предложено одобрить административное действие. Если нет, вы можете потребовать разрешения от manifest.

Вы пробовали обернуть свой процесс _process = Process.Start (psi) в try/catch и протоколировать любые исключения?

Вы пытались удалить этот код в консольное приложение с обоими RedirectStandard ... на false, чтобы узнать, что происходит?

+0

Это приложение работает на сервере. Нет пользователя. «Runas» отлично работает на сервере 2008. – user3306282

+0

Он завернут в try {} catch {}. Не исключение. – user3306282

+0

Отбрасывание RedirectStandardOuput/Error не влияет. – user3306282

Смежные вопросы