Главная страница
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.019 c
2-1206023198
webSQLNeederr
2008-03-20 17:26
2008.04.20
Отображение процесса аплодов в idFTP


2-1206537927
nicky000
2008-03-26 16:25
2008.04.20
could not convert variant of type (string) into type (double)


15-1204874837
@!!ex
2008-03-07 10:27
2008.04.20
Редакктор для редактирования Альфа канала


4-1187425785
Artog
2007-08-18 12:29
2008.04.20
Поделитесь опытом использования EnumProps


2-1205997033
Stepper
2008-03-20 10:10
2008.04.20
Отдельный поток?