〔delphi编程〕在windows中如何判断某个账户是管理员权限? 注:不是判断当前用户哦,而是指
照着网上这个思路改呗,这个是判断当前用户的:constSECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));SECURITY_BUILTIN_DOMAIN_RID = $00000020;DOMAIN_ALIAS_RID_ADMINS = $00000220;function TForm1。 IsAdmin: Boolean;var hAccessToken: THandle; ptgGroups: PTokenGroups; dwInfoBufferSize: DWORD; ps...全部
照着网上这个思路改呗,这个是判断当前用户的:constSECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));SECURITY_BUILTIN_DOMAIN_RID = $00000020;DOMAIN_ALIAS_RID_ADMINS = $00000220;function TForm1。
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;。收起