ICemannd Thanks Actually, we have pretty much the same reg edit except our times are different. I did notice I entered this incorrectly [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate] "WUServer"="http://x.x.x.x/" "WUStatusServer"="http://x.x.x.x/" I should not have had the last slashes in "="http://x.x.x.x/" Anyway I now have installed this and have tested against a vb script that tells me my setting are correct except austate still comes in as "detect pending" Back do the drawing board Thanks name AUBehave.vbs '------------------ ' AUBehave.vbs ver 2.8 17-Nov-2003 ' Check Automatic Update settings ' http://www.susserver.com/ '------------------ On Error Resume Next Set objWshNet = CreateObject("Wscript.Network") const HKCU = &H80000001 const HKLM = &H80000002 strDefComputer = lcase(objWshNet.ComputerName) Set oArgs = WScript.Arguments If oArgs.Count = 0 Then strComputer = InputBox("Enter the Name or IP Address for a computer to check its Automatic Update settings", "AUBehave - Read Auto Update settings", strDefComputer) Else strComputer = oArgs(0) End If If strComputer = "" Then WScript.Quit End if strComputer = lcase(strComputer) if left(strComputer,2)="\\" then strComputer=right(strComputer,(len(strComputer)-2)) end if Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") If Err.Number <> 0 Then msgbox "Connection Error to computer:" & VBCRLF & VBCRLF & " " & strComputer & VBCRLF, vbCritical, "Connection Error" WScript.Quit End If Resultmsg = "Automatic Update Settings " & VBCRLF & VBCRLF strMsg = "No Auto Update: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU" strValueName = "NoAutoUpdate" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & GetNoAutoUpdate(dwValue) & VBCRLF & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF & VBCRLF End If strMsg = "Use SUS Server: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU" strValueName = "UseWUServer" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & GetUseWUServer(dwValue) & VBCRLF If dwValue = "1" Then strMsg = " - SUS Server: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate" strValueName = "WUServer" If RegValueExists(strKeyPath, strValueName) Then oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue Resultmsg = Resultmsg & strMsg & strValue & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF End If strMsg = " - SUS Status Server: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate" strValueName = "WUStatusServer" If RegValueExists(strKeyPath, strValueName) Then oReg.GetStringValue HKLM,strKeyPath,strValueName,strValue Resultmsg = Resultmsg & strMsg & strValue & VBCRLF & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF & VBCRLF End If Else Resultmsg = Resultmsg & VBCRLF End If Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF Resultmsg = Resultmsg & " - Client will download updates from windowsupdate.microsoft.com" & VBCRLF & VBCRLF End If strMsg = "AU Options: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU" strValueName = "AUOptions" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & GetAUOptions(dwValue) & VBCRLF If dwValue = "4" Then strMsg = " - Scheduled Install Day: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU" strValueName = "ScheduledInstallDay" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & getday(dwValue) & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF End If strMsg = " - Scheduled Install Time: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU" strValueName = "ScheduledInstallTime" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & dwValue &":00" & VBCRLF & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF End If Else Resultmsg = Resultmsg & VBCRLF End If Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF strMsg = " - User controlled setting: " strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" strValueName = "AUOptions" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & GetAUOptions(dwValue) & VBCRLF If dwValue = "4" Then strMsg = " - Scheduled Install Day: " strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" strValueName = "ScheduledInstallDay" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & getday(dwValue) & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured" & VBCRLF End If strMsg = " - Scheduled Install Time: " strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" strValueName = "ScheduledInstallTime" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & dwValue &":00" & VBCRLF & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured" & VBCRLF & VBCRLF End If Else Resultmsg = Resultmsg & VBCRLF End If Else Resultmsg = Resultmsg & strMsg & "Setting Not present" & VBCRLF & VBCRLF End If End If strMsg = "No Auto Reboot with Logged on Users: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU" strValueName = "NoAutoRebootWithLoggedOnUsers" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & GetNoAutoReboot(dwValue) & VBCRLF & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF Resultmsg = Resultmsg & " - Default action: Users will be given a 5 minute countdown" & VBCRLF & VBCRLF End If strMsg = "Reschedule Wait Time: " strKeyPath = "Software\Policies\Microsoft\Windows\WindowsUpdate\AU" strValueName = "RescheduleWaitTime" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue If dwValue = "0" Then Resultmsg = Resultmsg & strMsg & "Disabled by setting value: " & dwValue & VBCRLF & VBCRLF End If If dwValue = "1" Then Resultmsg = Resultmsg & strMsg & dwValue &" minute" & VBCRLF & " - Any missed scheduled installation will occur after startup" & VBCRLF & VBCRLF End If If dwValue > "1" and dwValue < "61" Then Resultmsg = Resultmsg & strMsg & dwValue &" minutes" & VBCRLF & " - Any missed scheduled installation will occur after startup" & VBCRLF & VBCRLF End If If dwValue > "60" Then Resultmsg = Resultmsg & strMsg & "Invalid setting" & VBCRLF & " - Value is outside of expected range for this setting: " & dwValue & VBCRLF & VBCRLF End If Else Resultmsg = Resultmsg & strMsg & "Setting Not Configured in Policy" & VBCRLF Resultmsg = Resultmsg & " - Any missed scheduled installations will be rescheduled to a later time" & VBCRLF & VBCRLF End If strMsg = "AU State: " strKeyPath = "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" strValueName = "AUState" If RegValueExists(strKeyPath, strValueName) Then oReg.GetDWORDValue HKLM,strKeyPath,strValueName,dwValue Resultmsg = Resultmsg & strMsg & GetAUState(dwValue) & VBCRLF & VBCRLF Else Resultmsg = Resultmsg & strMsg & "Setting Not present" & VBCRLF & VBCRLF End If Resultmsg = Resultmsg & "AUBehave utility is under development, check back for updates and report errors. Thankyou." & VBCRLF & "http://www.SUSserver.com/ ~ Take control of your Windows Updates" MsgBox Resultmsg,,strComputer set oReg = nothing Function GetNoAutoUpdate(Index) Select Case Index Case 0 GetNoAutoUpdate = "0 - Auto Updates are Enabled by Policy" Case 1 GetNoAutoUpdate = "1 - Auto Updates are Disabled by Policy" Case Else GetNoAutoUpdate = "Error in this value" End select End Function Function GetUseWUServer(Index) Select Case Index Case 0 GetUseWUServer = "0 - Client will download updates from windowsupdate.microsoft.com" Case 1 GetUseWUServer = "1 - Client will connect to your SUS Server" Case Else GetUseWUServer = "Error in this value" End select End Function Function GetDay(Index) Select Case Index Case "0" GetDay = "Every Day" Case "1" GetDay = "Every Sunday" Case "2" GetDay = "Every Monday" Case "3" GetDay = "Every Tuesday" Case "4" GetDay = "Every Wednesday" Case "5" GetDay = "Every Thursday" Case "6" GetDay = "Every Friday" Case "7" GetDay = "Every Saturday" Case Else GetDay = "Error in this value" End select End Function Function GetAUOptions(Index) Select Case Index Case "0" GetAUOptions = "0" Case "1" GetAUOptions = "1 - Disabled in User Settings" Case "2" GetAUOptions = "2 - Notify Admin-priv user of a pending update waiting to be downloaded. User will initate the download." Case "3" GetAUOptions = "3 - Automatically downloads updates and notify Admin-priv user of pending installation." Case "4" GetAUOptions = "4 - Automatically downloads updates. Installation will occur on the scheduled day & time." case Else GetAUOptions = "Error in this value" End select End Function Function GetNoAutoReboot(Index) Select Case Index Case "0" GetNoAutoReboot = "Disabled - Users will be given a 5 minute countdown" Case "1" GetNoAutoReboot = "Enabled - Users will be prompted before restart" case Else GetNoAutoReboot = "Error in this value" End select End Function Function GetAUState(Index) Select Case Index Case "0" GetAUState = "0 - Initial 24 hour timeout (AU Wizard will wait)" Case "1" GetAUState = "1 - Waiting for user to run AU wizard from System Tray" Case "2" GetAUState = "2 - Detect pending" Case "3" GetAUState = "3 - Download pending (waiting for user to accept pre-download prompt)" Case "4" GetAUState = "4 - Download in progress" Case "5" GetAUState = "5 - Install pending" Case "6" GetAUState = "6 - Install complete" Case "7" GetAUState = "7 - Disabled" Case "8" GetAUState = "8 - Reboot pending (Reboot was declined)" Case Else GetAUState = "Error in this value" End select End Function Function RegValueExists(sRegKey, sRegValue) sRegKey = Trim(sRegKey) sRegValue = LCase(Trim(sRegValue)) ' init value RegValueExists = False If oReg.EnumValues(HKLM, sRegKey, aValueNames, aValueTypes) = 0 Then If Not IsNull(aValueNames) Then For i = 0 To UBound(aValueNames) If LCase(aValueNames(i)) = sRegValue Then RegValueExists = True End If Next End If End If End Function Function RegKeyExists(sRegKey) sRegKey = Trim(sRegKey) If oReg.EnumValues(HKLM, sRegKey, aValueNames, aValueTypes) = 0 Then RegKeyExists = True Else RegKeyExists = False End If End Function