您的位置:首页 > 其它

如何判断进程是否具有administrator权限

2010-06-09 16:31 525 查看
判断进程是否具有admin权限的source code。

是的话返回TRUE,否则为FALSE。

static BOOL IsAdmin(void)

{

HANDLE hAccessToken;

BYTE InfoBuffer[1024];

PTOKEN_GROUPS ptgGroups;

DWORD dwInfoBufferSize;

PSID psidAdministrators;

SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY;

UINT i;

BOOL bRet = FALSE;

if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hAccessToken))

return bRet;

bRet = GetTokenInformation(hAccessToken, TokenGroups, InfoBuffer, 1024, &dwInfoBufferSize);

CloseHandle(hAccessToken);

if(!bRet)

return bRet;

if(!AllocateAndInitializeSid(&siaNtAuthority,

2,

SECURITY_BUILTIN_DOMAIN_RID,

DOMAIN_ALIAS_RID_ADMINS,

0,0,0,0,0,0,

&psidAdministrators))

return FALSE;

bRet = FALSE;

ptgGroups = (PTOKEN_GROUPS)InfoBuffer;

for(i=0;i<ptgGroups->GroupCount;i++)

if(EqualSid(psidAdministrators,ptgGroups->Groups[i].Sid))

bRet = TRUE;

FreeSid(psidAdministrators);

return bRet;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐