- BOOL IsAdmin()
- {
- HANDLE hAccessToken;
- BYTE * InfoBuffer = new BYTE[1024];
- PTOKEN_GROUPS ptgGroups;
- DWORD dwInfoBufferSize;
- PSID psidAdministrators;
- SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY;
-
- if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hAccessToken))
- {
- delete InfoBuffer;
- return FALSE;
- }
-
- if(!GetTokenInformation(hAccessToken,TokenGroups,InfoBuffer,1024,&dwInfoBufferSize))
- {
- delete InfoBuffer;
- CloseHandle(hAccessToken);
- return FALSE;
- }
-
- CloseHandle(hAccessToken);
-
- if(!AllocateAndInitializeSid(&siaNtAuthority,
- 2,
- SECURITY_BUILTIN_DOMAIN_RID,
- DOMAIN_ALIAS_RID_ADMINS,
- 0,0,0,0,0,0,
- &psidAdministrators))
- {
- delete InfoBuffer;
- return FALSE;
- }
-
- ptgGroups = (PTOKEN_GROUPS)InfoBuffer;
-
- for(UINT i = 0; i < ptgGroups->GroupCount; i++)
- {
- if(EqualSid(psidAdministrators,ptgGroups->Groups[i].Sid))
- {
- FreeSid(psidAdministrators);
- delete InfoBuffer;
- return TRUE;
- }
- }
- return FALSE;
- }
http://blog.csdn.net/wangningyu/article/details/4389546
VC判断当前用户有无Administrator的权限(用EqualSid API函数判断与Admin是否在一个组的Sid)
原文:http://www.cnblogs.com/findumars/p/5928696.html