VC判断进程是否具有administrator权限的方法


本文向大家介绍VC判断进程是否具有administrator权限的方法,包括了VC判断进程是否具有administrator权限的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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;

}

希望本文所述对大家的VC程序设计有所帮助。