Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.061 c
3-1195702264
Петро
2007-11-22 06:31
2008.04.20
Универсальный доступ к СУБД


8-1178797443
BaryVetaL
2007-05-10 15:44
2008.04.20
Проблема псевдо 3D


2-1206124619
Res
2008-03-21 21:36
2008.04.20
smtp


11-1187883874
Vladimir Kladov
2007-08-23 19:44
2008.04.20
Объявление: новый модуль DecimalCalculations


2-1206293531
Face
2008-03-23 20:32
2008.04.20
как сделать событие OnCellClick при нажатии пробела на ячейке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский