2013-07-18 21 views
2

我对c#和这个论坛一般都很陌生,但就我而言,我还没有看到过像我这样能解决我的问题的任何问题。WaitForExit()在UAC或安全警告中激活

我打电话给方法Process.WaitForExit()等到安装文件完成安装。但是,该方法似乎认为UAC是'进程',并在UAC上单击“确定”后激活。有没有更好的方式等待代码进行之前完成安装过程?还是我做错了?手动禁用UAC(如果可能的话)是不可行的,除非它以编程方式完成。

下面是部分代码:

编辑:过程

Process netInstall = Process.Start(filePath + "\\Installer.exe"); 
netInstall.WaitForExit(); 
Console.WriteLine("Installation Finished!"); 

编辑2的正常呼叫:它是否有助于如果我说我安装MySQL服务器5.6?看来,除了安全警告之外,它在启动之前弹出并关闭一些窗口。问候。

+0

什么是你想怎么办?你是说你在'netInstall'进程中捕获UAC而不是你启动的可执行文件? – Shark

+0

我需要等到'netInstall'(这是一个安装程序exe)才能完成安装,然后再继续执行代码的WriteLine部分。但不知何故,当我点击安装程序的UAC上的OK并且UAC窗口关闭后,它就进入'WriteLine'。感谢您的快速回复。 :) – user2595220

+0

你意识到你不是在'netInstall'的实例空间启动安装程序,而是静态的? – Shark

回答

0

代码不正确。您创建了Process类的一个实例,但是随后调用了静态方法Process.Start,该方法创建了一个Process的新实例。

您的代码应该是这样的:

Process netInstall = Process.Start(filePath + "\\Installer.exe"); 
netInstall.WaitForExit(); 
Console.WriteLine("Installation Finished!"); 
+1

感谢您的信息,但它仍然没有解决我在安装程序正常结束之前启动'WaitForExit()'的主要问题。我将用该代码更新主线程。 :) – user2595220

0

与提升的权限运行你的应用程序:

<requestedExecutionLevel level="requireAdministrator"> 

还要考虑BasyStallion答案和正确启动网络安装

+0

我已经提高了特权。我仍然弹出安全警告,当我关闭它时,它仍然激活'WaitForExit()'。 – user2595220