2010-08-05 40 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

相關問題