![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Principal = Everyone [D3, D4, D5, D6, NT4, Win2k]
Марат © (2001-11-13 20:26:00)В русских NT "Все", в английских "Everyone". Можно ли узнать Principal для everyone у самих Windows. Или мне нужно смотреть какие NT стоят и в зависимости от этого использовать либо "Все", либо "Everyone".
Марат (2001-11-13 22:28:00) [1]const
SECURITY_WORLD_SID_AUTHORITY: TSIDIdentifierAuthority =
(Value: (0, 0, 0, 0, 0, 1));
SECURITY_WORLD_RID = $00000000;
// use FreeSid
function GetEveryoneSid: PSID;
begin
Result := nil;
if not AllocateAndInitializeSid(SECURITY_WORLD_SID_AUTHORITY, 1,
SECURITY_WORLD_RID,
0, 0, 0, 0, 0, 0, 0,
Result) then RaiseLastWin32Error;
if not IsValidSid(Result) then RaiseLastWin32Error;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
userName: array [0.. 255] of char;
domainName: array[0.. 255] of char;
nameLength: DWORD;
snu: SID_NAME_USE;
sid: PSID;
begin
sid := GetEveryoneSid;
try
if sid <> nil then
begin
nameLength := SizeOf(userName);
if not LookupAccountSid(nil, sid, userName, nameLength,
domainName, nameLength, snu) then RaiseLastWin32Error;
with Application do
MessageBox(PChar(@userName), PChar(Title), mb_IconInformation or mb_Ok);
end;
finally
if sid <> nil then FreeSid(sid);
end;
end;