您的位置:首页 > 产品设计 > UI/UE

VC判断当前用户有无Administrator的权限

2009-07-29 10:01 519 查看
 

 

    很方面的一个函数,有兴趣的看看!

 

 
/************************************************************************/
/* 函数说明:判断有无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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息