ISystemInformation::RebootRequired:有人要求提供一些示例代码来调用的回答中提到的ISystemInformation::RebootRequired 。
这是一个简介 - 不是很好,但不妨试一试:
Set autoupdate = CreateObject("Microsoft.Update.AutoUpdate")
autoupdate.Pause()
MsgBox Err.Number & " " & Err.Description
Set sys = CreateObject("Microsoft.Update.SystemInfo")
MsgBox sys.RebootRequired
' autoupdate.Resume() ' Enable to resume AutoUpdate
Set sys = Nothing
Set autoupdate = Nothing
也许只使用后一部分:
Set sys = CreateObject("Microsoft.Update.SystemInfo")
MsgBox sys.RebootRequired
Set sys = Nothing
我对 Windows Update Agent Object Model不是很熟悉。
重启:触发重启(警告)可能涉及许多注册表位置。获取-PendingReboot-查询。还有一个类似的 PowerShell 脚本。
以下是我发现的一些与 Windows 重新启动有关的注册表位置(绝对不是详尽的):
HKLM\SOFTWARE\Microsoft\Updates : UpdateExeVolatile
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager : PendingFileRenameOperations
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer : InProgress
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing : RebootPending
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update : RebootRequired
HKLM\SYSTEM\Setup : SystemSetupInProgress
并且正在进行计算机重命名操作:
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName : ComputerName
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName : ComputerName
CCMClientSDK:然后有一些 WMI 调用需要检查SCCM 2012 Client Reboot Pending Status
。CCMClientSDK.IsHardRebootPending
和CCMClientSDK.RebootPending
。检查Get-PendingReboot-Query 脚本。