转自:http://blog.tinybrowser.net/archives/2076

可以通过 ie 浏览器的主界面的菜单设置, “工具 -> Internet 选项 -> 连接 -> 局域网设置” 的 “代理服务器” 选项设置.

在 windows 下可以通过直接改以下注册表的方式更改代理设置, 但 IE 进程必须重启, 不是很专业.

Regedit4 [HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings] "MigrateProxy"=dword:00000001 "ProxyEnable"=dword:00000001 "ProxyHttp1.1"=dword:00000000 "ProxyServer"="http://ProxyServername:80" "ProxyOverride"="<local>"

更好的方法是采用 InternetSetOption 函数实时改设置, 并马上对系统全局所有进程生效.

#include <wininet.h> #pragma comment(lib, "wininet") typedef struct PROXY_SETTINGS_DATA { DWORD nFlags; TCHAR szProxy[MAX_PATH]; } PROXY_SETTINGS_DATA; void _GetProxyInfo(PROXY_SETTINGS_DATA * pSettings) { INTERNET_PER_CONN_OPTION_LIST List = { 0 }; INTERNET_PER_CONN_OPTION Option[5] = { 0 }; unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL; Option[1].dwOption = INTERNET_PER_CONN_AUTODISCOVERY_FLAGS; Option[2].dwOption = INTERNET_PER_CONN_FLAGS; Option[3].dwOption = INTERNET_PER_CONN_PROXY_BYPASS; Option[4].dwOption = INTERNET_PER_CONN_PROXY_SERVER; List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); List.pszConnection = NULL; List.dwOptionCount = 5; List.dwOptionError = 0; List.pOptions = Option; if(!InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, &nSize)) printf("InternetQueryOption failed! (%d)/n", GetLastError()); if(Option[0].Value.pszValue != NULL) printf("%s/n", Option[0].Value.pszValue); if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_PROXY_URL) == PROXY_TYPE_AUTO_PROXY_URL) printf("PROXY_TYPE_AUTO_PROXY_URL/n"); if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_DETECT) == PROXY_TYPE_AUTO_DETECT) printf("PROXY_TYPE_AUTO_DETECT/n"); INTERNET_VERSION_INFO Version = { 0 }; nSize = sizeof(INTERNET_VERSION_INFO); InternetQueryOption(NULL, INTERNET_OPTION_VERSION, &Version, &nSize); pSettings->nFlags = Option[2].Value.dwValue; lstrcpyn(pSettings->szProxy, Option[4].Value.pszValue, MAX_PATH); if(Option[0].Value.pszValue != NULL) GlobalFree(Option[0].Value.pszValue); if(Option[3].Value.pszValue != NULL) GlobalFree(Option[3].Value.pszValue); if(Option[4].Value.pszValue != NULL) GlobalFree(Option[4].Value.pszValue); } int _SetProxyInfo(PROXY_SETTINGS_DATA * pSettings) { // To include server for FTP, HTTPS, and so on, use the string // (ftp=http://<ProxyServerName>:80; https=https://<ProxyServerName>:80) INTERNET_PER_CONN_OPTION_LIST List; INTERNET_PER_CONN_OPTION Option[3]; unsigned long nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; Option[0].Value.pszValue = pSettings->szProxy; Option[1].dwOption = INTERNET_PER_CONN_FLAGS; Option[1].Value.dwValue = pSettings->nFlags; // This option sets all the possible connection types for the client. // This case specifies that the proxy can be used or direct connection is possible. Option[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS; Option[2].Value.pszValue = "<local>"; List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); List.pszConnection = NULL; List.dwOptionCount = 3; List.dwOptionError = 0; List.pOptions = Option; if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize)) printf("InternetSetOption failed! (%d)/n", GetLastError()); InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL,NULL); //The connection settings for other instances of Internet Explorer. return 0; }

使用时, 先调用 _GetProxyInfo 函数将原始的设置取出, 保存起来;再用 _SetProxyInfo 设置新的代理参数; 当不用自己的代理时, 将旧的设置参数写回去.

PROXY_SETTINGS_DATA stOrigin = { 0 }; PROXY_SETTINGS_DATA stNew = { PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT, _T("http://ProxyServername:80"), }; _GetProxyInfo(&stOrigin); _SetProxyInfo(&stNew); // ... // other code // ... _SetProxyInfo(&stOrigin);

更改 IE 代理服务器的设置相关推荐

  1. 电脑无internet访问_电脑中的代理服务器怎么设置 代理服务器设置方法 - 操作系统...

    如何设置电脑中的代理服务器?对于代理服务器,可能大家对其并不是非常了解,其实代理服务器作为一种特殊的网络服务,可以代理网络用户去获取网络信息,提高浏览速度与效率,而且还可以突破自身IP的访问限制,访问 ...

  2. win7系统更改密码策略的设置方法

    win7的密码策略关系着我们的密码格式.密码需要的字符等,如果我们设置的密码策略太过复杂,可能会让我们在使用密码时非常麻烦,但是也会让我们的密码更难被入侵,那么win7系统如何更改密码策略呢?就此问题 ...

  3. linux 笔记本键盘灯驱动程序,安装和使用CKB Next在Linux上更改Corsair键盘背光设置...

    本文介绍在Ubuntu.Debian.Arch Linux.Fedora.OpenSUSE系统下安装和使用CKB Next的方法,以在Linux系统上更改Corsair键盘背光设置.Corsair键盘 ...

  4. 联想e431笔记本更改硬盘模式bios设置的详细教程

    用硬盘安装系统,就要进入bios,将硬盘改为第一启动项即可重装系统.不同品牌的电脑,它的bios设置方法也就不同.那么,联想e431笔记本要如何更改硬盘模式呢?今天U大侠小编就和大家分享联想e431笔 ...

  5. Ubuntu更改国内源,设置固定IP和DNS

    Ubuntu更改国内源,设置固定IP和DNS 一 更改国内源 1 首先备份官方源,以免设置错误可恢复. $ sudo cp /etc/apt/sources.list /etc/apt/sources ...

  6. win10更改用户账户控制设置方法

    控制面板->系统和安全>更改用户账户控制设置

  7. 如何更改html的默认应用,win10更改默认打开程序设置方法_win10怎么更改应用默认打开方式-win7之家...

    在使用win10系统过程中,对于一些需要借助工具才能够打开的文件,我们每次在打开之前都会有一个选择打开的程序,对此有些用户就想要将其设置成默认打开方式,以此来较少一些不必要的选择,那么win10怎么更 ...

  8. Windows 7系统如何更改用户账户控制设置?

    问题描述: Windows 7系统如何更改用户账户控制设置? 解决方案: 1,点击"开始菜单",选择"控制面板". 2,选择"用户账户和家庭安全&qu ...

  9. w7怎样修改计算机用户,Win7系统更改用户账户控制设置的方法

    为了保护Win7系统安装,微软在Win7系统中都内置有用户账户控制的机制,不仅方便了帮助用户阻止恶意程序损坏系统,还能够帮助组织部署更易于管理的平台.然而当用户对win7系统稍微对电脑有一点的更改,系 ...

最新文章

  1. Python中logging.config配置文件解读
  2. 如何模拟超过 5 万的并发用户
  3. Scala 类和对象详解
  4. 玩转python(2)多线程的历史2
  5. 【OpenStack】【Keystone】安装与配置详解
  6. SAP License:MM中的几个概念
  7. BZOJ 1062 糖果雨
  8. c语言汉字转拼音,C#汉字转拼音(支持多音字)
  9. 咸鱼Maya笔记—初识Maya 2019
  10. 常用RTCM3 5条常用报文介绍
  11. [休闲]GDC China 2007上海中国游戏开发者大会
  12. nginx配置-优化静态资源
  13. android恶意积分墙代码,传统积分墙的忧虑:微信积分墙刷榜优化分析
  14. 【ERROR】ValueError: Of the four parameters: start, end, periods, and freq, exactly three must be spec
  15. java nifty_java-jMonkey和Nifty中的线程?
  16. 什么是nmap以及如何使用它
  17. 石头扫地机器人遇见地毯_作为用户我强烈推荐石头扫地机器人!请看我的使用体验...
  18. react-native实现微信分享和微信支付(安卓端)
  19. 基于springboot实现注册功能发送激活码至邮箱激活账户登录
  20. VHDL语言逻辑运算学习笔记

热门文章

  1. 2020-2021 CV算法实习面经(京东/商汤/思谋/依图/图森/字节/腾讯)
  2. P5490 【模板】扫描线
  3. 为什么java缩进不能tab_为什么代码缩进时必须要用 Tab 而不能用空格
  4. 快速把照片做成MV,用什么软件好?抖音火爆效果制作
  5. 史上最全前端学习路线图(视频+工具+书籍+资源)
  6. “上升”华为碰撞“下降”联想
  7. oracle数据库or exists,Oracle Not Exists运算符
  8. nginx 配置HTTPS证书-阿里云服务器
  9. (新版)一分钟经理人读后感
  10. K8S(Rancher)Ingress 规则 - Nginx 反向代理重定向