How can a required reboot be detected for Windows 7

徘徊边缘 提交于 2019-11-27 03:24:42

问题


I am working on a project where several software and drivers are installed on a windows 7 PC. This shall work without user inputs.

Now there is the question: How can I determine in this program if a reboot is required to finish an installation (can be driver or software).

We are working on Windows 7 embedded and there is no taskbar enabled or any tooltips or something like this visible. Software is installed in silent mode.


回答1:


Use the following registry key:

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

Source: How to find out if an MSI I just installed requested a windows reboot?

As discovered by the asker of this question HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending shows when a reboot is pending on the machine as long as the OS is Vista or newer.




回答2:


The "PendingReboot" module incorporates all the mentioned tests (+ CCM WMI probe) into a single convenient cmdlet to reliably detect pending reboot:

# Install
Install-Module -Name PendingReboot

# Run
Test-PendingReboot -Detailed



回答3:


After a long research I found a way how to query pending restarts with a native Windows DLL directly in a .NET application. The main problem is that there can be many reasons why Windows has to restart. In addition, the Windows version sometimes also plays a role.

During the research I came across an article describing various scripts in the Windows Update environment, such as determining whether the automatic updates service is enabled or a computer needs to be rebooted. There you will find a reference to the Microsoft.Update.SystemInfo Object, which finally led to ISystemInformation interface having the method ISystemInformation::get_RebootRequired (Gets a Boolean value that indicates whether a system restart is required to complete the installation or uninstallation of one or more updates.).

For more details about the journey, see my blog post Determine programmatically pending reboot status for a Windows machine in C# and PowerShell



来源:https://stackoverflow.com/questions/15482174/how-can-a-required-reboot-be-detected-for-windows-7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!