Войти

Показать полную графическую версию : [решено] Получить SID пользователя


support23
24-05-2013, 09:57
Добрый день!
Подскажите как получить SID пользователя в переменную, зная логин ?

Iska
24-05-2013, 11:52
support23, текущего пользователя или произвольного?

support23
24-05-2013, 13:06
текущего пользователя или произвольного? »
произвольного, работающего в домене

Iska
24-05-2013, 22:13
Например, так:
AutoItSetOption("MustDeclareVars", 1)

Local $sComputer = "."
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer($sComputer, "root\cimv2")
Local $oSWbemObjectEx

Local $sDomain = "domain"
Local $sUserName = "username"

For $oSWbemObjectEx In $oSWbemServicesEx.ExecQuery( _
"SELECT * FROM Win32_UserAccount WHERE " & _
"Domain = '" & $sDomain & "' AND " & _
"Name = '" & $sUserName & "'" _
)

ConsoleWrite($oSWbemObjectEx.SID & @CRLF)
Next

Exit(0)

glax24
25-05-2013, 23:22
Или считать из реестра
$s_Key = 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
$i = 0
While 1
$i += 1
$sSID = RegEnumKey($s_Key, $i)
If @error <> 0 Then ExitLoop ; no more Keys
If StringLen($sSID) > 8 Then
MsgBox(0, "", 'SID = ' & $sSID)
EndIf
WEnd

Iska
25-05-2013, 23:30
Или считать из реестра »
glax24, откуда такая уверенность — что произвольно выбранный пользователь регистрировался на данной машине?

glax24
26-05-2013, 10:00
Iska, а как с помощью WMI вы получите SID пользователя не активной ОС, да никак.
что произвольно выбранный пользователь регистрировался на данной машине »
И что значит регистрировался? Был создан но под ним не разу не заходили?

Iska
26-05-2013, 13:59
а как с помощью WMI вы получите SID пользователя не активной ОС, да никак. »
Коллега! Я что-то пропустил в вопросе и пояснениях автора темы? Вы сами придумали свой вопрос, сами ответили на него, а теперь пытаетесь его обосновать.

И что значит регистрировался? »
Нажал «Ctrl-Alt-Del», ввёл логин, домен, пароль и нажал «Enter».

Был создан но под ним не разу не заходили? »
На данной машине.

support23
27-05-2013, 08:30
Iska, благодарю за помощь! Вопрос закрыт!

madmasles
31-05-2013, 15:48
support23,
Штатный вариант.#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <Security.au3>

Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $aArrayOfData = _Security__LookupAccountName (http://autoit-script.ru/autoit3_docs/libfunctions/_security__lookupaccountname.htm)(@UserName (http://autoit-script.ru/autoit3_docs/macros.htm#@username))

; Print returned data if no error occured
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) IsArray (http://autoit-script.ru/autoit3_docs/functions/IsArray.htm)($aArrayOfData) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)("SID String = " & $aArrayOfData[0] & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf))
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)("Domain name = " & $aArrayOfData[1] & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf))
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)("SID type = " & _Security__SidTypeStr (http://autoit-script.ru/autoit3_docs/libfunctions/_security__sidtypestr.htm)($aArrayOfData[2]) & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf))
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)




© OSzone.net 2001-2012