在Windows中以不同语言获取管理员对象

时间:2014-01-03 03:38:03

标签: vbscript locale

我有一个用于验证用户凭据的vbscript,我的代码的一部分是

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

现在这个代码在Windows(德语和法语版)中失败,经过调试,我认为问题是,在德语版本中,对应英语“Administrators”的组被命名为“Administratoren”..

有没有通用的方法来获取对象?

感谢。

1 个答案:

答案 0 :(得分:1)

管理员组有一个well-known SID,所以这样的事情应该有效:

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将从Win32_Group类中获取名称:

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