首页 > 代码库 > VC判断当前用户有无Administrator的权限(用EqualSid API函数判断与Admin是否在一个组的Sid)
VC判断当前用户有无Administrator的权限(用EqualSid API函数判断与Admin是否在一个组的Sid)
[cpp] view plain copy
- /************************************************************************/
- /* 函数说明:判断有无Administrator的权限
- /* 参 数:无
- /* 返 回 值:成功返回TRUE,否则返回FALSE
- /* By:Koma 2009.07.28 23:30
- /************************************************************************/
- 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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。