Как определить SID пользователя по его имени?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Как определить SID пользователя по его имени?

Сообщение vipe2004 » 06.05.2005 (Пт) 20:50

Как определить SID пользователя по его имени?
И как потом писать в его ветку реестра HKEY_USERS?
Как я понимаю, она будет доступна только с правами SYSTEM?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.05.2005 (Пт) 22:12

LookupAccountName, RegSetValueEx, нет.
Изображение

vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Сообщение vipe2004 » 06.05.2005 (Пт) 22:31

Спасибо за ответ.

Private Declare Function LookupAccountName Lib "advapi32.dll" Alias "LookupAccountNameA" (lpSystemName As String, ByVal lpAccountName As String, sid As Any, cbSid As Long, ByVal ReferencedDomainName As String, cbReferencedDomainName As Long, peUse As Long) As Long

Я разбирался с LookupAccountName, но что-то не понял, что возвращает 3-й параметр (sid). Он нужен для передачи в ConvertSidToStringSid как Long, а sid из предыдущей функции возвращает вроде массив байт.

Кода бы кусочек, а?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.05.2005 (Пт) 23:13

И откуда все такие ленивые, а?
Код: Выделить всё
Option Explicit
Private Declare Function GetUserName Lib "advapi32" Alias "GetUserNameA" (ByVal lpBuffer As String, ByRef nSize As Long) As Long
Private Declare Function LookupAccountName Lib "advapi32" Alias "LookupAccountNameA" (ByVal lpSystemName As String, ByVal lpAccountName As String, SID As Any, ByRef cbSid As Long, ByVal ReferencedDomainName As String, ByRef cbReferencedDomainName As Long, ByRef peUse As Integer) As Long
Private Declare Function ConvertSidToStringSid Lib "advapi32" Alias "ConvertSidToStringSidA" (SID As Any, pStringSID As Long) As Long
Private Declare Function SysAllocString Lib "oleaut32" (ByVal pOlechar As Long) As String
Private Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As Long

Sub Main()
Dim UserName As String * 256, Length As Long: Length = 256
GetUserName UserName, Length
Debug.Print UserName
Dim SID As String * 256 ':-P
LookupAccountName vbNullString, UserName, ByVal SID, 256, Space(256), 256, 0
Dim pStringSID As Long
ConvertSidToStringSid ByVal SID, pStringSID
Debug.Print SysAllocString(pStringSID)
LocalFree pStringSID
End Sub
Изображение

vipe2004
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 10.04.2005 (Вс) 22:33

Сообщение vipe2004 » 07.05.2005 (Сб) 7:55

Огромное спасибо!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 96

    TopList