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

    技术2022-05-13  9

       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)