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

Вниз

Проверить права администратора   Найти похожие ветки 

 
suspeded   (2007-08-15 13:55) [0]

Везде в сети этот код размножили, а он не рабочий. Знаний подправить не хватает.

type
 PTOKEN_GROUPS = TOKEN_GROUPS^;

function RunningAsAdministrator(): Boolean;
var
 SystemSidAuthority: SID_IDENTIFIER_AUTHORITY = SECURITY_NT_AUTHORITY;
 psidAdmin: PSID;
 ptg: PTOKEN_GROUPS = nil;
 htkThread: Integer; { HANDLE }
 cbTokenGroups: Longint; { DWORD }
 iGroup: Longint; { DWORD }
 bAdmin: Boolean;
begin
 Result := false;
 if not OpenThreadToken(GetCurrentThread(), // get security token
   TOKEN_QUERY, FALSE, htkThread) then
   if GetLastError() = ERROR_NO_TOKEN then
   begin
     if not OpenProcessToken(GetCurrentProcess(),
       TOKEN_QUERY, htkThread) then
       Exit;
   end
   else
     Exit;

 if GetTokenInformation(htkThread, // get #of groups
   TokenGroups, nil, 0, cbTokenGroups) then
   Exit;

 if GetLastError() <> ERROR_INSUFFICIENT_BUFFER then
   Exit;

 ptg := PTOKEN_GROUPS(getmem(cbTokenGroups));
 if not Assigned(ptg) then
   Exit;

 if not GetTokenInformation(htkThread, // get groups
   TokenGroups, ptg, cbTokenGroups, cbTokenGroups) then
   Exit;

 if not AllocateAndInitializeSid(SystemSidAuthority,
   2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
   0, 0, 0, 0, 0, 0, psidAdmin) then
   Exit;

 iGroup := 0;
 while iGroup < ptg^.GroupCount do // check administrator group
 begin
   if EqualSid(ptg^.Groups[iGroup].Sid, psidAdmin) then
   begin
     Result := TRUE;
     break;
   end;
   Inc(iGroup);
 end;
 FreeSid(psidAdmin);
end;


Помогите, пжалста...


 
Lacmus ©   (2007-08-15 14:03) [1]

http://msdn2.microsoft.com/en-us/library/ms647418.aspx


 
suspeded   (2007-08-15 14:07) [2]

Спасибо!

implementation
function IsUserAnAdmin():boolean; external shell32 name "IsUserAnAdmin";

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if IsUserAnAdmin then Caption:="да" else Caption:="нет";
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.02 c
2-1206081072
Wint
2008-03-21 09:31
2008.04.20
Как считать данные из файла побитно??


15-1204749799
Triton5
2008-03-05 23:43
2008.04.20
Простая программа, которая делает скрины экрана...


2-1206196743
San1
2008-03-22 17:39
2008.04.20
перекрытие Create


3-1195535563
Skyle
2007-11-20 08:12
2008.04.20
Midas(D5)->DataSnap(BDS 2006/2007)


15-1204899711
Kolan
2008-03-07 17:21
2008.04.20
Чем же все таки работать с базами SQLite?