Option Explicit Dim objWbem Dim objRegistry Dim objSID Dim arrRegKeys Dim strKey Dim strRtn Dim strCmd Dim lngRtn Const HKEY_USERS = &H80000003 On Error Resume Next Err.Clear If WScript.Arguments.Count = 0 Then Set objWbem = GetObject("winmgmts:") If Err.Number <> 0 Then WScript.Echo "Error retrieving top-level WMI " & _ "object for local server" WScript.Echo "(Error: " & Err.Number & "), Description: " & _ Err.Description WScript.Quit(1) End If Set objRegistry = GetObject("winmgmts:\root\default:StdRegProv") If Err.Number <> 0 Then WScript.Echo "Error getting the Registry Provider " & _ "object for local server" WScript.Echo "(Error: " & Err.Number & "), Description: " & _ Err.Description WScript.Quit(2) End If Else strCmd = WScript.Arguments(0) Set objWbem = GetObject("winmgmts:\\" & strCmd) If Err.Number <> 0 Then WScript.Echo "Error retrieving top-level WMI object " & _ "for the computer, " & strCmd WScript.Echo "(Error: " & Err.Number & "), Description: " & _ Err.Description WScript.Quit(1) End If Set objRegistry = GetObject("winmgmts:\\" & _ strCmd & "\root\default:StdRegProv") If Err.Number <> 0 Then WScript.Echo "Error getting the Registry Provider " & _ "object for the computer, " & strCmd WScript.Echo "(Error: " & Err.Number & "), Description: " & _ Err.Description WScript.Quit(2) End If End If lngRtn = objRegistry.EnumKey(HKEY_USERS, "", arrRegKeys) If lngRtn = 0 Then For Each strKey In arrRegKeys If UCase(strKey) = ".DEFAULT" Or _ UCase(Right(strKey, 8)) = "_CLASSES" Then ' Do Nothing Else Set objSID = objWbem.Get("Win32_SID.SID='" & _ strKey & "'") WScript.Echo "SID: " & strKey & vbCrLf & _ Space(3) & "Name: " & objSid.AccountName & _ " -- In Domain: " & _ objSID.ReferencedDomainName End If Next Else WScript.Echo "Error enumerating the Registry keys " & _ "under HKEY_USERS" WScript.Echo Err.Number & " – " & Err.Description End If