2016-09-06 14 views
1

アクティブセッションユーザSIDを取得するにはどうすればよいですか?私はCMDコマンドを使用してこれを行うことができますアクティブセッションのユーザーSIDを取得する方法はありますか。

(これは、現在のユーザーセッションである):

for /f "tokens=2-4" %a in ('qwinsta') do @if "%c"=="Active" wmic useraccount where name='%a' get sid 

たぶん誰かがVBScriptのと同じことを行う方法を教えてください? 「現在のユーザー」私は意味、「UACは私が管理者の資格情報を入力して作られた前にスクリプトを開始したアカウント」とは、

+0

編集 ' 'qwinsta''が含まれているかについての質問。 –

+0

[qwinsta](https://technet.microsoft.com/en-us/library/cc731503(V= ws.11).aspx) – Bublik

答えて

0

この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:私は、このリンクからそれを得たHow to find out logged on users SID with VBScript?

+0

ありがとうございました。このスクリプトは動作しますが、ほとんど問題は実行時です管理者として私は 'admin SID'を返す'私はこのスクリプトを、管理者として実行するにもかかわらず、現在のユーザを取得したいと思う。 – Bublik

+0

私は助けを求めている。トリックを行う。 – Bublik

+0

@Bublikこの機能を持つユーザーのSIDを知るには、別の 'UserName'パラメータを使用して呼び出すだけです。 – Tomalak

0

現在のドメインのユーザーでログインするためにSIDを取得

コマンドラインからコマンドwhoami /userを実行して、ログインしたユーザーのSIDを取得します。

例:

c:\>whoami /user 
USER INFORMATION 
---------------- 
User Name  SID 
============== ============================================== 
mydomain\wincmd S-1-5-21-7375663-6890924511-1272660413-2944159 
c:\> 

そして、あなたは、バッチファイルでそのような何かを行うことができます。

@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 
exit 
+0

正確にはVBSコードではありません... – Tomalak

関連する問題