Главная страница
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.017 c
15-1205103927
Мото
2008-03-10 02:05
2008.04.20
Как проассоциировать файлы такого то типа со своей программой?


3-1196068794
Paradise
2007-11-26 12:19
2008.04.20
Перекрытие временных периодов


2-1206126773
smartleds
2008-03-21 22:12
2008.04.20
Как бы из Сендера индекс текущего компонента получить


15-1204502666
Поп Гапон
2008-03-03 03:04
2008.04.20
А как китайцы набирают текст


2-1206463452
Strate
2008-03-25 19:44
2008.04.20
Несколько вопросов по сервисам начинающего