Что нового

Получить SID

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Получить часть SID как в этом ключе реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18

Код:
#include<Security.au3>

Func _GetCurrentUser()
    Local $result = DllCall("Wtsapi32.dll","int", "WTSQuerySessionInformationW", "Ptr", 0, "int", -1, "int", 5, "ptr*", 0, "dword*", 0)
    If @error Or $result[0] = 0 Then Return SetError(1,0,"")
    Local $User = DllStructGetData(DllStructCreate("wchar[" & $result[5] & "]" , $result[4]),1)
    DllCall("Wtsapi32.dll", "int", "WTSFreeMemory", "ptr", $result[4])
    Return $User
EndFunc

Func _GetCurrentUserSID()
    ; [email protected]
    Local $User = _Security__LookupAccountName(_GetCurrentUser(),@ComputerName)
    If @error Then Return SetError(1,0,"")
    Return $User[0]
EndFunc

MsgBox(0, '', _GetCurrentUser() & @CRLF & _GetCurrentUserSID())


Этот код возвращает только часть "правильного ответа"
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Я так понял, нужно получить только часть SID [ S-1-5-18 ]
Может так:

Код:
Dim $i = 1
Dim $sKey
While 1
    $sKey = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData", $i)
	$sKey = StringLeft($sKey, 8)
	If @error <> 0 Then 
		ExitLoop
	ElseIf $sKey = "S-1-5-18" Then
    MsgBox(0, "Кеу:" & $i, $sKey)
		ExitLoop
	EndIf
	$i += 1
WEnd
 
Автор
sforce5

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Не, смысла бы не было в вопросе, ведь у каждого разный SID. Необязательно S-1-5-18
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
sforce5
Может быть ответ скрывается под этим ключом?

Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList]
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 711
sforce5, а что мешает отделить первые четыре цифры? SID обозначается следующим образом:

S-R-I-S…

Что все это хозяйство означает можно почитать здесь, а функция работает правильно, возвращает полный идентификатор.



Добавлено:
Сообщение автоматически объединено:

А вообще, порывшись в MSDN, я так понимаю, что раздел "...\S-1-5-18" должен быть одинаковый для всех.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Yashied [?]
А вообще, порывшись в MSDN, я так понимаю, что раздел "...\S-1-5-18" должен быть одинаковый для всех.
Так и есть.
SID: S-1-5-18
Название: Локальная система
Описание: Учетная запись службы, используемая операционной системой.
 
Верх