我正在开发一个项目,在Windows 7 PC上安装了多个软件和驱动程序。这将在没有用户输入的情况下工作。
现在有一个问题:如何在此程序中确定是否需要重新启动才能完成安装(可以是驱动程序或软件)。
我们正在开发嵌入式Windows 7,并且没有启用任务栏或任何工具提示或类似的东西可见。软件以静默方式安装。
答案 0 :(得分:13)
使用以下注册表项:
HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
来源:How to find out if an MSI I just installed requested a windows reboot?
提问者发现此问题HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
显示只要操作系统是Vista或更新版本,机器上的重启等待时间。
答案 1 :(得分:0)
"PendingReboot"模块将所有提到的测试(+ CCM WMI探针)合并到一个方便的cmdlet中,以可靠地检测挂起的重启:
# Install
Install-Module -Name PendingReboot
# Run
Test-PendingReboot -Detailed
答案 2 :(得分:0)
经过长期的研究,我找到了一种方法来直接在.NET应用程序中使用本机Windows DLL查询挂起的重启。 主要问题是Windows必须重新启动的原因可能很多。另外,Windows版本有时也起作用。
在研究过程中,我遇到了一篇文章,描述了Windows Update环境中的各种脚本,例如确定是否启用了自动更新服务或需要重新启动计算机。在那里,您将找到对Microsoft.Update.SystemInfo对象的引用,该引用最终导致具有方法ISystemInformation::get_RebootRequired的ISystemInformation接口(获取一个布尔值,该值指示是否需要重新启动系统才能完成一个系统的安装或卸载。或更多更新。)
有关旅程的更多详细信息,请参阅我的博客文章Determine programmatically pending reboot status for a Windows machine in C# and PowerShell