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

判断进程是否具有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;
}

 

 

 

你可能感兴趣的:(Security,query,domain,token,byte)