歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> 有沒有判斷用戶是否是Administrator的API

有沒有判斷用戶是否是Administrator的API

日期:2017/2/27 12:11:55   编辑:Linux文化

>>> 此貼的回復 >> http://www.518sf.cn/blog/article.asp?id=55

>>> 此貼的回復 >> function IsAdmin: Boolean; var  hAccessToken: THandle;  ptgGroups: PTokenGroups;  dwInfoBufferSize: DWORD;  psidAdministrators: PSID;  x: Integer;  bSuccess: BOOL; begin  Result := False;  bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,   hAccessToken);  if not bSuccess then  begin   if GetLastError = ERROR_NO_TOKEN then   bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,                  hAccessToken);  end;  if bSuccess then  begin   GetMem(ptgGroups, 1024);   bSuccess := GetTokenInformation(hAccessToken, TokenGroups,                   ptgGroups, 1024, dwInfoBufferSize);   CloseHandle(hAccessToken);   if bSuccess then   begin    AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,     SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,     0, 0, 0, 0, 0, 0, psidAdministrators);    {$R-}    for x := 0 to ptgGroups.GroupCount - 1 do     if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then     begin      Result := True;      Break;     end;    {$R+}    FreeSid(psidAdministrators);   end;   FreeMem(ptgGroups);  end; end; 

>>> 此貼的回復 >> 呵呵,基礎代碼,到處都有的 還有一個特別的方法 適合XP/2003的 用MS的LegitCheck COM來做,LegitCheck就是MS WinXP/2003的正版驗證系統 其提供的ILegitCheck就有IsAdministrator的函數,呵呵:)


Copyright © Linux教程網 All Rights Reserved