2010-08-05 46 views
5

我正在编写一个小型的C#应用​​程序,将使用Internet Explorer与几个网站进行交互,在WatiN的帮助下。以编程方式设置代理地址,端口,用户,密码通过Windows注册表

但是,它也会不时需要使用代理。

我碰到过Programmatically Set Browser Proxy Settings in C#,但这只能让我输入代理地址,而且我还需要输入代理用户名和密码。我怎样才能做到这一点?

注:

  • 如果解决方案改变了整个系统的上网设置没关系。但是,我宁愿只更改IE代理设置(对于任何连接)。
  • 解决方案必须使用IE8和Windows XP SP3或更高版本。
  • 我想有可能首先阅读代理设置,以便以后我可以撤销我的更改。

编辑

随着通过Microsoft.Win32.RegistryKey访问Windows注册表的帮助下,我能申请代理是这样的:

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

对于IE,你可以在注册表中使用相同的地方。只需设置ProxyServer =“user:[email protected]:8080”,但Firefox完全拒绝这一点,并且不会尝试连接。

+0

只要它在IE上运行。谢谢。 – 2010-12-27 14:27:08

+0

非常不错..它的作品@Mike L ..但是如果密码包含@#等特殊字符,我们会怎么做呢?那么它应该是用户:p @ ssword @ 127.0.0.1:8080 ???? – Mike 2017-02-23 07:58:11

1

这里是通过代理访问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; 
+0

@ebpower:我不明白这对我有何帮助。请注意,我的应用程序不会从Web浏览/请求任何内容,只会命令IE执行此操作,因此我需要为IE或系统设置代理。但是,非常感谢,我的应用程序的下一个版本肯定需要执行一些Http请求,这将派上用场。 – 2010-08-05 18:16:45

+0

@fabio:哎呀 - 对不起,我没有仔细阅读这个问题。我知道没有设置从IE的互联网选项设置用户名和密码。这些不是由登录用户的凭证自动提供的吗? – 2010-08-05 19:40:25

+0

@ebpower:大声笑,你仍然没有得到它。我需要我的C#应用​​程序将代理应用于Internet Explorer /操作系统。 – 2010-08-05 19:57:11

相关问题