首先,我想通过修改注册表来设置IE代理。
以下是修改注册表的代码:
//打开注册表
Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
//设置代理
rk.SetValue("ProxyEnable", 1);
rk.SetValue("ProxyServer", "8.8.8.8:8000");
//取消代理
//rk.SetValue("ProxyEnable", 0);
rk.Flush(); //刷新注册表
rk.Close();
然后调用 WinInet API ,激活代理设置。
[DllImport(@"wininet",
SetLastError = true,
CharSet = CharSet.Auto,
EntryPoint = "InternetSetOption",
CallingConvention = CallingConvention.StdCall)]
public static extern bool InternetSetOption(
int hInternet,
int dmOption,
IntPtr lpBuffer,
int dwBufferLength
);
void SetProxy() {
//打开注册表
Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
//设置代理
rk.SetValue("ProxyEnable", 1);
rk.SetValue("ProxyServer", "8.8.8.8:8000");
//取消代理
//rk.SetValue("ProxyEnable", 0);
rk.Flush(); //刷新注册表
rk.Close();
//激活代理设置
InternetSetOption(0, 39, IntPtr.Zero, 0);
InternetSetOption(0, 37, IntPtr.Zero, 0);
}
到这里,应该能成功设置代理了,但是问题出现了,无法正常设置代理。
我的系统是Win7 专业版,在网上搜了一遍后发现,有人说这段代码在XP下能work,win7下会失效。

本文探讨了在Win7系统中使用C#设置IE代理的问题。由于InternetSetOption()函数在Win7下可能失效,作者拒绝了创建新进程的蛋疼解决方案,而是引用了Joel 'Jaykul' Bennett的文章,提供了在C#中完美设置Windows互联网连接代理的代码,可在GitHub上找到开源实现。
最低0.47元/天 解锁文章
156

被折叠的 条评论
为什么被折叠?



