Process.Start挂起在Server 2012上

时间:2014-09-18 13:33:37

标签: c# windows

我可以找到很多讨论Process.Start的线程,但没有一个听起来像我的。下面的代码已经在Windows Server 2003&我现在正试图在2012年安装相同的应用程序但是尽管" My.exe"开始,Process.Start本身就会挂起 - 所以"开始"永远不会记录。任何人都可以提出问题所在吗?

非常感谢,

迈克尔

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");

2 个答案:

答案 0 :(得分:0)

可能与this相同?

还假设

  

" C:\ My.exe"

是拼写错误=" C:\\ My.exe"或@" C:\ My.exe"

答案 1 :(得分:0)

我认为交互式请求管理权限的“runas”动词仅在ProcessStartInfo.UseShellExecute = true时才有效,假设应用程序确实以交互方式运行,并且您希望提示用户批准管理操作。如果不是,您可能会考虑要求manifest的权限。

您是否尝试在try / catch中包装_process = Process.Start(psi)并记录任何异常?

您是否尝试将此代码放入带有RedirectStandard的控制台应用程序...错误以查看会发生什么?