foxbat
23-05-2012, 16:16
On Error Resume Next
const HKEY_USERS = &H80000003
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
intRes = objReg.EnumKey(HKEY_USERS, "", sNames)
If intRes <> 0 Then
WScript.Echo intRes & ": не удалась прочитать подразделы ""HKEY_USERS\" & strKey & """"
WScript.Quit
End If
If IsArray(sNames) Then
For Each strSubKey In sNames
ReadKey strKey & "\" & strSubKey
'wscript.echo(strSubKey)
If strSubKey="S-1-5-21-3542024261-4289602802-4269527428-1311" Then
WScript.Echo "catch"
Else strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'Set objAccount = objWMIService.Get("Win32_SID.SID='"&strsubkey&"'")
Set objAccount = objWMIService.Get("Win32_Account.SID='"&strsubkey&"'")
Wscript.Echo objAccount.SID
End If
Next
End If
споткнулся на этом
'Set objAccount = objWMIService.Get("Win32_SID.SID='"&strsubkey&"'")
Set objAccount = objWMIService.Get("Win32_Account.SID='"&strsubkey&"'")
Wscript.Echo objAccount.SID
почему в первом случае, который закоментирован, SID объекта выводит, а во втором нет, у того и у другого класса есть свойство SID.
мне нужно выявить имя пользователя ( отображаемое имя) зная его SID, типа Иванов Иван. если я правильно понял такое свойство есть у Win32_Account - Name.
Цель скрипта откорректировать данные в реестре. а именно у всех пользователей
HKEY_USERS\SID\Software\Microsoft\Office\Common\UserInfo отредактировать ключ UserName - поставить актуальный. сейчас у всех пользователей одно и тоже имя - не правильное
const HKEY_USERS = &H80000003
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
intRes = objReg.EnumKey(HKEY_USERS, "", sNames)
If intRes <> 0 Then
WScript.Echo intRes & ": не удалась прочитать подразделы ""HKEY_USERS\" & strKey & """"
WScript.Quit
End If
If IsArray(sNames) Then
For Each strSubKey In sNames
ReadKey strKey & "\" & strSubKey
'wscript.echo(strSubKey)
If strSubKey="S-1-5-21-3542024261-4289602802-4269527428-1311" Then
WScript.Echo "catch"
Else strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'Set objAccount = objWMIService.Get("Win32_SID.SID='"&strsubkey&"'")
Set objAccount = objWMIService.Get("Win32_Account.SID='"&strsubkey&"'")
Wscript.Echo objAccount.SID
End If
Next
End If
споткнулся на этом
'Set objAccount = objWMIService.Get("Win32_SID.SID='"&strsubkey&"'")
Set objAccount = objWMIService.Get("Win32_Account.SID='"&strsubkey&"'")
Wscript.Echo objAccount.SID
почему в первом случае, который закоментирован, SID объекта выводит, а во втором нет, у того и у другого класса есть свойство SID.
мне нужно выявить имя пользователя ( отображаемое имя) зная его SID, типа Иванов Иван. если я правильно понял такое свойство есть у Win32_Account - Name.
Цель скрипта откорректировать данные в реестре. а именно у всех пользователей
HKEY_USERS\SID\Software\Microsoft\Office\Common\UserInfo отредактировать ключ UserName - поставить актуальный. сейчас у всех пользователей одно и тоже имя - не правильное