Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.
December 21, 2006
I have scripted GetUserSID.bat to return the current user's domain SID.
The syntax for using GetUserSID.bat is:
[call GetUserSID SID
Where SID is a call directed environment variable that will contain the user's domain SID.
GetUserSID.bat contains:
@echo offif {%1}=={} @echo Syntax: GetUserSID SID&goto :EOFif exist "%TEMP%GetUserSID.VBS" goto [email protected] WshShell = Wscript.CreateObject("Wscript.Shell") >"%TEMP%GetUserSID.VBS"@echo.Set oADinfo = createobject("ADSystemInfo") >>"%TEMP%GetUserSID.VBS"@echo.strUserAdPath = oADinfo.userName >>"%TEMP%GetUserSID.VBS"@echo.Set objADObject = GetObject("LDAP://" ^& strUserAdPath) >>"%TEMP%GetUserSID.VBS"@echo.tempsid = objADobject.objectsid >>"%TEMP%GetUserSID.VBS"@echo.hexsid = OctetToHexStr(tempsid) >>"%TEMP%GetUserSID.VBS"@echo.decsid = HexStrToDecStr(hexsid) >>"%TEMP%GetUserSID.VBS"@echo.Wscript.Echo decsid >>"%TEMP%GetUserSID.VBS"@echo.Wscript.Quit >>"%TEMP%GetUserSID.VBS"@echo.Function OctetToHexStr(arrbytOctet) >>"%TEMP%GetUserSID.VBS"@echo. Dim k >>"%TEMP%GetUserSID.VBS"@echo. OctetToHexStr = "" >>"%TEMP%GetUserSID.VBS"@echo. For k = 1 To Lenb(arrbytOctet) >>"%TEMP%GetUserSID.VBS"@echo. OctetToHexStr = OctetToHexStr _ >>"%TEMP%GetUserSID.VBS"@echo. ^& Right("0" ^& Hex(Ascb(Midb(arrbytOctet, k, 1))), 2) >>"%TEMP%GetUserSID.VBS"@echo. Next >>"%TEMP%GetUserSID.VBS"@echo.End Function >>"%TEMP%GetUserSID.VBS"@echo.Function HexStrToDecStr(strSid) >>"%TEMP%GetUserSID.VBS"@echo. Dim arrbytSid, lngTemp, j >>"%TEMP%GetUserSID.VBS"@echo. ReDim arrbytSid(Len(strSid)/2 - 1) >>"%TEMP%GetUserSID.VBS"@echo. For j = 0 To UBound(arrbytSid) >>"%TEMP%GetUserSID.VBS"@echo. arrbytSid(j) = CInt("&H" ^& Mid(strSid, 2*j + 1, 2)) >>"%TEMP%GetUserSID.VBS"@echo. Next >>"%TEMP%GetUserSID.VBS"@echo. HexStrToDecStr = "S-" ^& arrbytSid(0) ^& "-" _ >>"%TEMP%GetUserSID.VBS"@echo. ^& arrbytSid(1) ^& "-" ^& arrbytSid(8) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = arrbytSid(15) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(14) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(13) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(12) >>"%TEMP%GetUserSID.VBS"@echo. HexStrToDecStr = HexStrToDecStr ^& "-" ^& CStr(lngTemp) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = arrbytSid(19) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(18) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(17) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(16) >>"%TEMP%GetUserSID.VBS"@echo. HexStrToDecStr = HexStrToDecStr ^& "-" ^& CStr(lngTemp) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = arrbytSid(23) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(22) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(21) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(20) >>"%TEMP%GetUserSID.VBS"@echo. HexStrToDecStr = HexStrToDecStr ^& "-" ^& CStr(lngTemp) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = arrbytSid(25) >>"%TEMP%GetUserSID.VBS"@echo. lngTemp = lngTemp * 256 + arrbytSid(24) >>"%TEMP%GetUserSID.VBS"@echo. HexStrToDecStr = HexStrToDecStr ^& "-" ^& CStr(lngTemp) >>"%TEMP%GetUserSID.VBS"@echo.End Function >>"%TEMP%GetUserSID.VBS":getitset %1=NONEfor /f "Tokens=*" %%a in ('cscript //nologo "%TEMP%GetUserSID.VBS"') do ( set %1=%%a)
You May Also Like