Search code examples
vbscriptlocale

Get Administrotor Object in windows in different language


I've a vbscript to authenticate an user credentials, one part of my code is

  Set objLocalGroup = GetObject("WinNT://./Administrators, group")

now this code fail in Windows(German and French Version), after debugging, I think the problem is that, in German Version, the Group corresponding to English "Administrators" was named "Administratoren"..

Is there any generic way to get the Object?

Thanks.


Solution

  • The administrators group has a well-known SID, so something like this should work:

    Set wmi = GetObject("winmgmts://./root/cimv2")
    Set admins = wmi.Get("Win32_SID.SID='S-1-5-32-544'")
    Set objLocalGroup = GetObject("WinNT://./" & admins.AccountName & ",group")
    

    Another way would be getting the name from the Win32_Group class:

    Set wmi = GetObject("winmgmts://./root/cimv2")
    
    qry = "SELECT * FROM Win32_Group WHERE SID = 'S-1-5-32-544'"
    For Each group In wmi.ExecQuery(qry)
      Set objLocalGroup = GetObject("WinNT://./" & group.Name & ",group")
    Next