不重启IE修改代理服务器的设置
2009-05-30 01:55
330 查看
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 }
先介绍下注册表下的两个键
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 }
相关文章推荐
- 不重启IE修改代理服务器的设置
- 不重启IE修改代理服务器的设置
- 动态设置IE代理服务器,并不用重启IE
- C#自动设置IE代理服务器(翻墙软件)代码实现
- c#设置取消ie代理服务器
- win7下IE主页无法修改,IE设置无法保存解决方案
- 使用Js脚本 修改控制IE的注册表相关设置(activex等)
- 设置tomcat配置文件,在Myeclipse中修改jsp文件之后不用重启tomcat
- CentOS设置静态IP,以及解决设置静态IP过程中,修改DNS配置后重启网络nameserver被删除的问题
- php修改php.ini重启nginx php.ini设置不生效
- IE 代理服务器设置程序实现
- IE代理服务器设置被禁用问题
- c#设置取消ie代理服务器
- IE取消或设置代理服务器脚本
- 0.VC(custom)-怎么设置IE代理服务器
- IE 代理服务器设置程序实现
- C#设置当前程序通过IE代理服务器上网
- Eclipse下设置tomcat,修改Java代码不必重启tomcat
- 在js中添加信任站点,禁用xinxp弹出窗口阻止程序,修改IE ActiveX安全设置
- 修改注册表来修改IE的设置---资料汇总