在webBrowser中使用代理而不编辑注册表

时间:2012-10-06 20:07:44

标签: c# proxy browser

我想在我的网络浏览器中使用代理,但不在机器上编辑注册表。

1 个答案:

答案 0 :(得分:3)

您可以使用WMI,但这仍会调整系统设置。如果您只想调整自己进程的代理设置,可以通过urlmon.dll公开的UrlMkSetSessionOption来完成。下面列出了此功能的一个示例。有关INTERNET_OPTION_PROXY的更多信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa385328(v=vs.85).aspx

private void SetSessionProxy(strin ProxyAddress, string BypassList)
{
    var proxyInfo= new INTERNET_PROXY_INFO {
        dwAccessType = 0x3,
        lpszProxy = ProxyAddress,
        lpszProxyBypass = BypassList
    };
    int structSize = Marshal.SizeOf(proxyInfo);
    const uint SetProxy = 0x26;

    if (Win32Native.UrlMkSetSessionOption(SetProxy, structure, dwLen, 0) != 0)
        throw new Win32Exception();
}

[StructLayout(LayoutKind.Sequential)]
private class INTERNET_PROXY_INFO
{
    public uint dwAccessType;
    [MarshalAs(UnmanagedType.LPStr)]
    public string lpszProxy;
    [MarshalAs(UnmanagedType.LPStr)]
    public string lpszProxyBypass;
}

[DllImport("urlmon.dll", CharSet=CharSet.Unicode, SetLastError=true)]
private static extern int UrlMkSetSessionOption(uint dwOption, INTERNET_PROXY_INFO structNewProxy, uint dwLen, uint dwZero);