代码之家  ›  专栏  ›  技术社区  ›  Fábio Antunes

通过Windows注册表以编程方式设置代理地址、端口、用户、密码

  •  5
  • Fábio Antunes  · 技术社区  · 15 年前

    我正在编写一个小型的C应用程序,该应用程序将使用Internet Explorer与一对夫妇的A网站进行交互,在 WatiN .

    但是,还需要不时使用代理。

    我遇到过 Programmatically Set Browser Proxy Settings in C# ,但这只允许我输入代理地址,而且我还需要输入代理用户名和密码。我该怎么做?

    注:

    • 解决方案是否会更改整个系统的Internet设置并不重要。但是,我希望只更改IE代理设置(对于任何连接)。
    • 解决方案必须与IE8和Windows XP SP3或更高版本一起使用。
    • 我希望能够先读取代理设置,以便以后可以撤消更改。

    编辑

    在Windows注册表的帮助下,可以通过 Microsoft.Win32.RegistryKey ,我可以应用这样的代理:

    RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
    registry.SetValue("ProxyEnable", 1);
    registry.SetValue("ProxyServer", "127.0.0.1:8080");
    

    但如何指定登录代理服务器的用户名和密码?

    我还注意到,一旦注册表发生更改,IE就不会刷新其连接的代理详细信息。如何命令IE从注册表刷新其连接设置?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   Mike L.    15 年前

    对于IE,可以在注册表中使用相同的位置。只需设置proxyserver=“user:password@127.0.0.1:8080”,但是firefox完全拒绝,并且不尝试连接。

        2
  •  1
  •   Ed Power    15 年前

    以下是我通过代理访问Web服务时的做法:

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetUrl);
    
            WebProxy proxy = new WebProxy(proxyUrl, port);
    
            NetworkCredential nwCred = new NetworkCredential(proxyUser, proxyPassword);
    
            CredentialCache credCache = new CredentialCache();
            credCache.Add(proxy.Address, "Basic", nwCred);
            credCache.Add(proxy.Address, "Digest", nwCred);
            credCache.Add(proxy.Address, "Negotiate", nwCred);
            credCache.Add(proxy.Address, "NTLM", nwCred);
            proxy.Credentials = credCache;
    
            proxy.BypassProxyOnLocal = false;
    
            request.Proxy = proxy;