如何获得活动会话用户SID?(这是当前用户会话)
我可以使用CMD命令来完成这个任务:
for /f "tokens=2-4" %a in ('qwinsta') do @if "%c"=="Active" wmic useraccount where name='%a' get sid也许有人能告诉我如何对VBScript做同样的事情?
“当前用户”指的是“在UAC让我输入Admin凭据之前启动脚本的帐户”。
发布于 2016-09-06 14:15:27
尝试一下这个vbscript:
Option Explicit
Dim strUser
strUser = CreateObject("WScript.Network").UserName
Wscript.echo "The SID of this username " & strUser & " is :" &_
vbcr & GetSIDFromUser(strUser)
'******************************************************************
Function GetSIDFromUser(UserName)
Dim DomainName, Result, WMIUser
If InStr(UserName, "\") > 0 Then
DomainName = Mid(UserName, 1, InStr(UserName, "\") - 1)
UserName = Mid(UserName, InStr(UserName, "\") + 1)
Else
DomainName = CreateObject("WScript.Network").UserDomain
End If
On Error Resume Next
Set WMIUser = GetObject("winmgmts:{impersonationlevel=impersonate}!" _
& "/root/cimv2:Win32_UserAccount.Domain='" & DomainName & "'" _
& ",Name='" & UserName & "'")
If Err.Number = 0 Then
Result = WMIUser.SID
Else
Result = ""
End If
On Error GoTo 0
GetSIDFromUser = Result
End Function
'******************************************************************NB :,我是从这个链接如何使用VBScript查找登录用户SID?得到的
发布于 2016-09-06 14:42:43
获取当前登录域用户的SID
从命令行运行命令whoami /user,以获取登录用户的SID。
示例:
用户信息
你可以用批处理文件做这样的事情:
@ECHO OFF
SETLOCAL enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=," %%a in ('Whoami /user /FO CSV') do (
set "UserName=%%a"
set "SID=%%b"
echo The username logged is : !Username!
echo.
echo And its SID = !SID!
)
pause
exithttps://stackoverflow.com/questions/39350842
复制相似问题