VC获取和修改代理设置源码

获得设置的代理服务器地址的代码

BOOL Cxxx::GetHttpProxy(CString &ip,BOOL &bProxyEnable)
{
     HKEY hKeyIn = HKEY_CURRENT_USER, hKeyOut;
     if(RegOpenKeyEx(hKeyIn, 
                     "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", 
                     0, 
                     KEY_CREATE_LINK | KEY_WRITE | KEY_READ | KEY_NOTIFY, 
                     &hKeyOut) != ERROR_SUCCESS )
     {
         return FALSE;
     }
 
//检测是否已经允许使用代理服务器
 
     ULONG regsize = 0;
     if(RegQueryValueEx(hKeyOut, 
                        "ProxyEnable", 
                        NULL, 
                        NULL, 
                        NULL, 
                        ®size)!=ERROR_SUCCESS)
     {
         return FALSE;
     }
      
     LPBYTE pValue = new BYTE[regsize];
     memset(pValue, 0x00, regsize);
 
     if(RegQueryValueEx(hKeyOut, 
                        "ProxyEnable", 
                        NULL, 
                        NULL, 
                        pValue, 
                        ®size)!=ERROR_SUCCESS)
     {
         return FALSE;
     }
 
     bProxyEnable=(int)*pValue;
     delete[] pValue;
     pValue = NULL;
 
  
     /************************************************************/
     if(bProxyEnable)
     {
         regsize = 0;
         if(RegQueryValueEx(hKeyOut, "ProxyServer", NULL, NULL, NULL, ®size)!=ERROR_SUCCESS)
         {
             return FALSE;
         }
          
         pValue = new BYTE[regsize];
         memset(pValue, 0x00, regsize);
 
         if(RegQueryValueEx(hKeyOut, "ProxyServer", NULL, NULL, pValue, ®size)!=ERROR_SUCCESS)
         {
             return FALSE;
         }
 
         ip=(char*)pValue;
         delete[] pValue;
         pValue = NULL;
     }
     else
         ip="";
 
     RegCloseKey(hKeyOut);
 
     return TRUE;
}

取消代理设置的代码

BOOL Cxxx::DelProxy()
{
    HKEY hKeyIn = HKEY_CURRENT_USER, hKeyOut;
    if(RegOpenKeyEx(
        hKeyIn, 
        "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", 
        0, 
        KEY_CREATE_LINK | KEY_WRITE | KEY_READ | KEY_NOTIFY, 
        &hKeyOut) != ERROR_SUCCESS )
 
    {
        return FALSE;
    }
 
    ULONG regsize = 0;
     if(RegQueryValueEx(
         hKeyOut, 
         "ProxyEnable", 
         NULL, 
         NULL, 
         NULL, 
         ®size)!=ERROR_SUCCESS)
     {
         return FALSE;
     }
      
     LPBYTE pValue = new BYTE[regsize];
     memset(pValue, 0x00, regsize);
 
     if(RegQueryValueEx(
         hKeyOut, 
         "ProxyEnable", 
         NULL, 
         NULL, 
         pValue, 
         ®size)!=ERROR_SUCCESS)
     {
         return FALSE;
     }
 
     BOOL bEnable=(BOOL)*pValue;
     delete[] pValue;
     pValue = NULL;
 
  
     /************************************************************/
     if(bEnable)
     {
         regsize = 0;
         if(RegQueryValueEx(
             hKeyOut, 
             "ProxyServer", 
             NULL, 
             NULL, 
             NULL, 
             ®size)!=ERROR_SUCCESS)
         {
             return FALSE;
         }
          
         pValue = new BYTE[regsize];
         memset(pValue, 0x00, regsize);
 
         DWORD dwData=0;
         if(RegSetValueEx(
             hKeyOut,
             "ProxyEnable",
             0,
             REG_DWORD,
             (LPBYTE)&dwData,
             sizeof(DWORD))!=ERROR_SUCCESS)
         {
             return FALSE;
         }
 
         RegCloseKey(hKeyOut);
 
 
//使设置生效
         if(!InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0))
         {
             return FALSE;
         }
     }
     return TRUE;
}


你可能感兴趣的:(VC获取和修改代理设置源码)