不重启IE修改代理服务器的设置

来源:互联网 发布:淘宝11.11成交额 编辑:程序博客网 时间:2024/06/10 11:18
IE通过Internet选项进行代理服务器的设置相信大家很熟悉,但是有的情况下,需要有一堆代理IP进行切换,这样就显得很不方便。那我们就弄小工具实现下切换
先介绍下注册表下的两个键
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings下面
       ProxyServer:设置代理服务器的地址和端口号
       ProxyEnable:设置是否开启代理服务器

知道原理,代码写起来也很简单

1 RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"true);
2 key.SetValue("ProxyServer"this.proxylibs[index]);
3 key.SetValue("ProxyEnable"1);
4 key.Close();

    这样的实现虽然简单,还是存在一个问题。当设置完注册表后,当前的打开的IE窗口还不能立即生效,只有打开新窗口,配置才能生效.很多时候关掉窗口COOKIE就失效了,就失去了修改代理IP的意义

下面在介绍一个WinInet下的函数,设置一个 Internet 选项,让设置完的配置立即生效,看代码

 

1 [DllImport("wininet.dll", SetLastError = true)]
2 private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lPBuffer, int lpdwBufferLength);
3 private const int INTERNET_OPTION_REFRESH = 0x000025;
4 private const int INTERNET_OPTION_SETTINGS_CHANGED = 0x000027;
5 InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
6 InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
7 

完整的代码

 

 1   //======================================================
 2     //     100M 双线空间 + 50M数据库 + 100M邮箱  28元/年
 3     //     200M 双线空间 + 50M数据库 + 100M邮箱  38元/年
 4     //     300M 双线空间 + 50M数据库 + 100M邮箱  48元/年
 5     //     600M 双线空间 + 100M数据库 + 200M邮箱 80元/年
 6     //     1G 双线空间   + 200M数据库 + 300M邮箱  100元/年
 7 
 8     //                             特价主机,有需要的M我 QQ:70975363
 9 
10     //======================================================
11 public class ProxyManager
12 {
13     [DllImport("wininet.dll", SetLastError = true)]
14     private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lPBuffer, int lpdwBufferLength);
15 
16     private const int INTERNET_OPTION_REFRESH = 0x000025;
17     private const int INTERNET_OPTION_SETTINGS_CHANGED = 0x000027;
18 
19     private List<string> proxylibs = new List<string>();
20 
21      private void Reflush()
22      {
23          InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0);
24          InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0);
25      }
26 
27 
28      public ProxyManager()
29      {
30          OpenFileDialog opf = new OpenFileDialog();
31          if (opf.ShowDialog().Equals(DialogResult.OK))
32          {
33              string[] proxylist = File.ReadAllLines(opf.FileName, Encoding.Default);
34              for (int i = 0; i < proxylist.Length; i++)
35                  this.proxylibs.Add(proxylist[i]);
36          }
37      }
38 
39      public void SetProxy(int index)
40      {
41          RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"true);
42          key.SetValue("ProxyServer"this.proxylibs[index]);
43          key.SetValue("ProxyEnable"1);
44          key.Close();
45          this.Reflush();
46      }
47  }

 

 

0 0
原创粉丝点击