我正在编写一个Winform(C#.NET)应用程序来更改Windows的全局(也称为Internet Explorer)代理设置.
我正在使用它.
RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", "127.0.0.1:8080");
Run Code Online (Sandbox Code Playgroud)
但它表现得很奇怪.我使用两个浏览器测试了这个
在Chrome运行时更改/禁用代理时.Chrome仍在使用之前的代理.这一变化并未影响其流程.但是当我刚打开的时候 Internet Options(inetcpl.cpl) > Connections > LAN Settings.现在考虑先前的代理更改.当我说刚刚开放我真的是说开放.我的意思是,不要编辑或点击任何其他按钮.我猜,它的全局代理实际上正在改变(通过从注册表中读取)和谷歌Chrome立即起作用.
Internet Explorer的情况要糟糕得多.在IE运行时使用我的应用程序更改/禁用代理后甚至在转到"Internet选项(inetcpl.cpl)>连接> Lan设置"后,正在运行的IE代理不会受到影响.即使我在新标签中打开新链接也不行.我不得不重新启动IE以便将该更改合并到一起.
我想要的行为是,每当我在我的应用程序中更改代理设置时,所有使用全局代理的浏览器(无论它们是否正在运行)都应立即将更改纳入设置.
我怎样才能做到这一点?