This article is an example of how VC determines whether a process has admin permission. Yes, returns True, otherwise false. Share to everyone for your reference. The implementation methods are as follows:
Copy Code code as follows:
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;
}
I hope this article on the VC program for everyone to help.