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