Получение имени пользователя или группы в Windows по их SID (идентификатор безопасности) согласно локализации операционной системы.
1 2 3 4 5 6 7 |
var sid, name: string; begin sid:= 'S-1-5-32-544'; name:= SIDToName(sid); ShowMessage(name); end; |
Параметры
sid - SID группы или пользователя
SID некоторых основных групп пользователей:
- S-1-1-0 Все
- S-1-5-32-544 Администраторы
- S-1-5-32-545 Пользователи
- S-1-5-11 Проверенные
Результат
Имя пользователя или группы в случае успеха и пустая строка в случае неудачи.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
function SIDToName(StrSID: string): string; var SID : PSID; Buffer : PAnsiChar; NameLen, TempLen : Cardinal; err : Boolean; SIDType : Dword; Name : string; begin SID := nil; Name:= ''; err := ConvertStringSIDToSID(PWideChar(StrSID), SID); if err then begin NameLen := 0; TempLen := 0; LookupAccountSidA(nil, SID, nil, NameLen, nil, TempLen, SIDType); GetMem(Buffer, NameLen); try err := LookupAccountSidA(nil, SID, Buffer, NameLen, nil, TempLen, SIDType); if err then SetString(Name, Buffer, Namelen); finally FreeMem(Buffer); end; end; if Assigned(SID) then LocalFree(Cardinal(SID)); result := Name; end; |