Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Права пользователя   Найти похожие ветки 

 
apic ©   (2007-10-13 14:55) [0]

Как узнать под каким типом учетной записи запущена программа (Администратор, пользователь или гость...)?


 
TIF ©   (2007-10-13 15:24) [1]

API


 
apic ©   (2007-10-13 15:31) [2]

Сильно сказано конечно...


 
Dib@zol ©   (2007-10-13 15:32) [3]

> [1] TIF ©   (13.10.07 15:24)

Вах, какой ответ!!! Сразу Мастера можно давать ;)

Я в этих делах не спец, но может быть, тут нужен LookupAccountName?


 
Правильный Вася   (2007-10-13 15:47) [4]

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


 
Рамиль ©   (2007-10-13 16:19) [5]

ИМХО:
Получить все группы, в которых состоит пользователь, и по http://support.microsoft.com/kb/243330 вычислить группу (по имени нельзя, так как ее можно переименовать)


 
Lacmus ©   (2007-10-13 19:40) [6]



{******************************************************************************* *******************}
{                                                                                                  }
{ Project JEDI Code Library (JCL)                                                                  }

const
 SECURITY_NT_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
 SECURITY_BUILTIN_DOMAIN_RID  = ($00000020);

 DOMAIN_ALIAS_RID_ADMINS           = ($00000220);

 DOMAIN_ALIAS_RID_USERS            = ($00000221);

 DOMAIN_ALIAS_RID_GUESTS           = ($00000222);

function IsAdministrator: Boolean;
var
 psidAdmin: Pointer;
 Token: THandle;
 Count: DWORD;
 TokenInfo: PTokenGroups;
 HaveToken: Boolean;
 I: Integer;
begin
 Result := False;
 psidAdmin := nil;
 TokenInfo := nil;
 HaveToken := False;
 try
   HaveToken := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, Token);
   if (not HaveToken) and (GetLastError = ERROR_NO_TOKEN) then
     HaveToken := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, Token);
   if HaveToken then
   begin
     {$IFDEF FPC}
     Win32Check(AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
       SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0,
       psidAdmin));
     if GetTokenInformation(Token, TokenGroups, nil, 0, @Count) or
      (GetLastError <> ERROR_INSUFFICIENT_BUFFER) then
        RaiseLastOSError;
     TokenInfo := PTokenGroups(AllocMem(Count));
     Win32Check(GetTokenInformation(Token, TokenGroups, TokenInfo, Count, @Count));
     {$ELSE FPC}
     Win32Check(AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
       SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0,
       psidAdmin));
     if GetTokenInformation(Token, TokenGroups, nil, 0, Count) or
      (GetLastError <> ERROR_INSUFFICIENT_BUFFER) then
        RaiseLastOSError;
     TokenInfo := PTokenGroups(AllocMem(Count));
     Win32Check(GetTokenInformation(Token, TokenGroups, TokenInfo, Count, Count));
     {$ENDIF FPC}
     for I := 0 to TokenInfo^.GroupCount - 1 do
     begin
       {$RANGECHECKS OFF} // Groups is an array [0..0] of TSIDAndAttributes, ignore ERangeError
       Result := EqualSid(psidAdmin, TokenInfo^.Groups[I].Sid);
       {$IFDEF RANGECHECKS_ON}
       {$RANGECHECKS ON}
       {$ENDIF RANGECHECKS_ON}
       if Result then
         Break;
     end;
   end;
 finally
   if TokenInfo <> nil then
     FreeMem(TokenInfo);
   if HaveToken then
     CloseHandle(Token);
   if psidAdmin <> nil then
     FreeSid(psidAdmin);
 end;
end;

пользователь - DOMAIN_ALIAS_RID_USERS или гость - DOMAIN_ALIAS_RID_GUESTS



 
apic ©   (2007-10-18 14:46) [7]

Lacmus то, что надо!



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
2-1192539880
harisma
2007-10-16 17:04
2007.11.11
Количество элементов


1-1188202326
member
2007-08-27 12:12
2007.11.11
Действия в расшаренном ресурсе


2-1192771585
Lamer666
2007-10-19 09:26
2007.11.11
КАК "КОДОМ" присвоить картинку в Image?


2-1192729888
Jimmy
2007-10-18 21:51
2007.11.11
Сколько памяти занимает программа


2-1192535102
l_v
2007-10-16 15:45
2007.11.11
структуры большой вложенности