如何找出我刚刚安装的MSI是否请求Windows重启?

我已经在c#中build立了一个setup.exe,运行几个链接的MSI(使用/ QUIET / NORESTART)。 最后,我想检查一下机器是否需要重启(也就是说,如果有一个MSI请求重启)。

我如何检测?

以下注册表项包含以下信息:

HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

来源: http : //technet.microsoft.com/en-us/sysinternals/bb897556.aspx

另一种方法是检查您在代码中运行的所有MSI的退出代码。 如果MSI的退出代码是3010,则需要重新启动。http://msdn.microsoft.com/en-us/library/aa368542.aspx )。

假设您使用System.Diagnostics.Process来运行MSI,并且在进程退出后,您将使用ExitCode属性( http://msdn.microsoft.com/zh-cn/library/)检索进程退出代码system.diagnostics.process.exitcode(v = vs.90).aspx )。

所以,你可以简单地检查一个MSI进程的退出代码,当你完成所有的MSI运行,如果他们中的任何一个返回3010,那么你知道你需要重新启动。