C#设置IE代理

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


首先,我想通过修改注册表来设置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下会失效。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值