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 }
