13

我正在做一个项目,在 Windows 7 PC 上安装了多个软件和驱动程序。这将在没有用户输入的情况下工作。

现在有一个问题:如何在此程序中确定是否需要重新启动才能完成安装(可以是驱动程序或软件)。

我们正在使用嵌入式 Windows 7,并且没有启用任务栏或任何工具提示或类似的东西可见。软件以静默模式安装。

4

3 回答 3

15

使用以下注册表项:

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

资料来源:如何确定我刚刚安装的 MSI 是否要求重新启动 Windows?

正如这个问题的提问者所发现的HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending那样,只要操作系统是 Vista 或更高版本,机器上的重新启动就会挂起。

于 2013-03-18T16:45:31.583 回答
2

经过长时间的研究,我找到了一种方法,如何直接在 .NET 应用程序中使用本机 Windows DLL 查询挂起的重新启动。主要问题是 Windows 必须重新启动的原因可能有很多。此外,Windows 版本有时也会发挥作用。

在研究过程中,我遇到了一篇描述 Windows Update 环境中各种脚本的文章,例如确定是否启用了自动更新服务或是否需要重新启动计算机。在那里您将找到对 Microsoft.Update.SystemInfo 对象的引用,该对象最终导致 ISystemInformation 接口具有ISystemInformation::get_RebootRequired方法(获取一个布尔值,指示是否需要重新启动系统才能完成安装或卸载一个或更多更新。)。

有关旅程的更多详细信息,请参阅我的博客文章在 C# 和 PowerShell 中以编程方式确定 Windows 计算机的挂起重启状态

于 2019-09-01T15:47:27.933 回答
0

PendingReboot”模块将所有提到的测试(+ CCM WMI 探测)合并到一个方便的 cmdlet 中,以可靠地检测挂起的重新启动:

# Install
Install-Module -Name PendingReboot

# Run
Test-PendingReboot -Detailed
于 2018-09-24T10:18:07.357 回答