首先,系统用户名对应着Windows系统中的Security Identifier(SID),每个用户都有唯一的SID标识符。查询系统用户名的方法可以使用VBScript语言编写,以下是具体的攻略步骤。
步骤一:编写vbs代码,定位用户的SID值。
在vbs代码区块中编写以下代码,通过WScript实现获取当前用户的用户名。
Set objWshNetwork = WScript.CreateObject("WScript.Network")
strUserName = objWshNetwork.UserName
WScript.Echo strUserName
通过objWshNetwork获取当前用户的用户名,存入变量strUserName中,最后输出结果。
接下来使用以下代码段,通过Windows API函数ConvertStringSidToSid() 将用户名转换为相应的SID。
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objSID = objWMI.Get("Win32_UserAccount.Domain='" & strComputer & "',Name='" & strUserName & "'")
strSID = objSID.SID
Dim arrByte, i
ReDim arrByte(UBound(strSID))
For i = 0 To UBound(strSID)
arrByte(i) = AscB(Mid(strSID, i + 1, 1))
Next
strBinarySID = Join(arrByte, ",")
Set objSID = Nothing
WScript.Echo strBinarySID
以上代码段首先通过objWMI对象获取 Win32_UserAccount类中指定对应用户名的对象,并存入objSID对象中;然后再通过一系列操作将strSID (一个二进制格式的Security Identifier)转换成为一个十进制数字形式的字符串.
最终输出的结果为当前用户的SID值。
步骤二:执行vbs。
将以上代码段保存为SID.vbs文件,注意将变量 strComputer 替换成你的计算机名,然后在文件所在路径打开命令行窗口,输入以下命令并执行:
cscript SID.vbs
将会看到如下类似的查询结果:
李三(T10201) 的 SID: S-1-5-21-3623811015-3361044348-30300820-1001
示例一:
如果现有一组电脑名和用户名,可以将以上代码段封装为函数,然后传入函数参数进行查询。
Function GetSID(ComputerName, UserName)
Set objWMI = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2")
Set colAccounts = objWMI.ExecQuery ("Select SID from Win32_UserAccount where Name='" & UserName & "'")
For Each objAccount in colAccounts
strSID = objAccount.SID
Next
Set objWMI = Nothing
GetSID = strSID
End Function
以上代码中,GetSID函数接受两个参数,ComputerName和UserName。使用Win32_UserAccount类查询 Win32_UserAccount.Domain 对应电脑名(ComputerName);Name 对应用户名(UserName)即可查询到指定用户的SID值。
示例二:
如果需要查询一个域用户的SID值,可以根据以下代码段执行。
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objSID = objWMI.Get("Win32_SID.SID='S-1-5-21-3623811015-3361044348-30300820-1104'")
strDomain = objSID.ReferencedDomainName
strUserName = objSID.AccountName
WScript.Echo strUserName & "'s domain is " & strDomain
以上代码中,查找Win32_SID 类中SID属性为指定值(‘S-1-5-21-3623811015-3361044348-30300820-1104’)的用户,获取相应对象中的 ReferencedDomainName和AccountName 属性的值。最终输出的结果为该用户所在的域名以及用户的账号名。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:可以查询系统用户名sid的vbs - Python技术站