最近幫朋友做個小工具,設置代理IP。在這裏和大家分享一下。設置代理IP其實很簡單,就是修改IE設置,但我們不可以能每次都手動調整。修改註冊表就可以搞定他。代理IP分局域網代理和單位網絡代理。兩個的註冊表也不一樣的。多的不說了,我貼代理,大家一看就知道了
void CProxyDlg::SetPorxy(CString str, int isproxy)
{
CString ipstr = m_ipstr;
HKEY hKEY;
LPCTSTR data_Set="Software//Microsoft//Windows//CurrentVersion//Internet Settings";
//訪問註冊表,hKEY則保存此函數所打開的鍵的句柄
long ret0=(::RegOpenKeyEx(HKEY_CURRENT_USER,data_Set,0,KEY_WRITE,&hKEY));
if(ret0!=ERROR_SUCCESS) //如果無法打開hKEY,則中止程序的執行
{
AfxMessageBox("錯誤:無法打開有關的hKEY");
return;
}
//打開局域網代理
DWORD type = REG_DWORD ; //定義數據類型
long ret1=::RegSetValueEx(hKEY, "ProxyEnable", NULL, type, (LPBYTE)(&isproxy), 4);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox("錯誤:無法設置有關的註冊表信息");
return;
}
LPBYTE owner_Set=CString_To_LPBYTE(str); //定義用戶姓名 owner_Set
type = REG_SZ ; //定義數據類型
int len = str.GetLength(); //定義數據長度
ret1=::RegSetValueEx(hKEY, "ProxyServer", NULL, type, owner_Set, len);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox("錯誤:無法設置有關的註冊表信息");
return;
}
//單獨網絡上網
data_Set="Software//Microsoft//Windows//CurrentVersion//Internet Settings//Connections";
//訪問註冊表,hKEY則保存此函數所打開的鍵的句柄
ret0=(::RegOpenKeyEx(HKEY_CURRENT_USER,data_Set,0,KEY_WRITE,&hKEY));
if(ret0!=ERROR_SUCCESS) //如果無法打開hKEY,則中止程序的執行
{
AfxMessageBox("錯誤:無法打開有關的hKEY");
return;
}
type = REG_BINARY ; //定義數據類型
UCHAR szBuf[80] = {0};
szBuf[0] = 0x3c;
szBuf[4] = 0x09;
if ( 1 == isproxy )
{
szBuf[8] = 0x03; //代理
}else
{
szBuf[8] = 0x01; //不代理
}
szBuf[12] = str.GetLength();
for (int i = 0; i < len; i++ )
{
szBuf[i+ 16] = str[i] ;
}
CString local = "<local>";
for (i = 0; i < 7; i++ )
{
szBuf[20 + str.GetLength() + i] = local[i];
}
ret1=::RegSetValueEx(hKEY, "寬帶連接", NULL, type, (LPBYTE)(szBuf), 80);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox("錯誤:無法設置有關的註冊表信息");
return;
}
RegCloseKey(hKEY);
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0); //通知註冊表中代理改變,下次連接時啓動代理
InternetSetOption(NULL ,INTERNET_OPTION_REFRESH , NULL, 0); //從註冊表中讀入代理
}
http://download.csdn.net/source/2646323 可以下載這個小工具,有源代碼