VC判断进程是否具有administrator权限的方法
更新时间:2014年10月23日 15:00:05 投稿:shichen2014
这篇文章主要介绍了VC判断进程是否具有administrator权限的方法,在Windows应用程序设计中具有一定的实用价值,需要的朋友可以参考下
本文实例讲述了VC判断进程是否具有admin权限的方法。是的话返回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;
}
{
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;
}
希望本文所述对大家的VC程序设计有所帮助。
相关文章
C++实现分水岭算法(Watershed Algorithm)
这篇文章主要为大家详细介绍了C++实现分水岭算法Watershed Algorithm,具有一定的参考价值,感兴趣的小伙伴们可以参考一 下2018-01-01
最新评论