2010-08-05 5 views
5

Piszę małą aplikację w języku C#, która będzie korzystać z przeglądarki Internet Explorer do interakcji z kilkoma witrynami, z pomocą WatiN.Programowo ustaw adres serwera proxy, port, użytkownika, hasło przez rejestr systemu Windows

Jednak będzie również wymagać od czasu do czasu korzystania z serwera proxy.

Znalazłem Programmatically Set Browser Proxy Settings in C#, ale to tylko pozwala mi wprowadzić adres proxy, i muszę również wprowadzić nazwę użytkownika i hasło proxy. Jak mogę to zrobić?

Uwaga:

  • To nie ma znaczenia, czy to rozwiązanie zmienia całe ustawienia systemu internetowego. Jednak wolałbym zmienić tylko ustawienia proxy IE (dla dowolnego połączenia).
  • Rozwiązanie musi współpracować z IE8 i Windows XP SP3 lub nowszym.
  • Chciałbym mieć możliwość najpierw odczytania ustawień proxy, aby później móc cofnąć moje zmiany.

EDIT

Z pomocą rejestru systemu Windows dostępnym poprzez Microsoft.Win32.RegistryKey, udało mi się zastosować coś proxy tak:

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

Ale jak mogę podać nazwę użytkownika i hasło do logowania na serwerze proxy?

Zauważyłem również, że IE nie odświeża szczegółów Proxy dla swoich połączeń po zmianie rejestru, w jaki sposób mogę zamówić IE, aby odświeżyć ustawienia połączenia z rejestru?

Dzięki

Odpowiedz

2

dla IE, można korzystać z tego samego miejsca w rejestrze. Wystarczy ustawić ProxyServer = "user: [email protected]: 8080", jednak firefox całkowicie odrzuca to i nie próbuje się połączyć.

+0

Tak długo, jak działa na IE. Dzięki. –

+0

bardzo ładne .. działa @Mike L .. ale co zrobimy, jeśli hasło zawiera znaki specjalne takie jak @ # itd .. to powinien to być użytkownik: p @ ssword @ 127.0.0.1: 8080 ???? – Mike

1

Oto jak zrobiłem to przy dostępie do usługi internetowej przez pełnomocnika:

 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: Nie rozumiem, jak to by mi pomogło. Zauważ, że moja aplikacja nie przegląda/nie żąda niczego z sieci, a jedynie polecenia IE, aby to zrobić, dlatego muszę ustawić proxy dla IE lub dla systemu. Ale dzięki jakikolwiek sposób, następna wersja mojej aplikacji na pewno będzie musiała wykonać kilka żądań HTTP, przyda się to. –

+0

@fabio: Ups, przepraszam, nie przeczytałem dokładnie tego pytania. Nie znam ustawień z internetowych opcji IE, aby ustawić nazwę użytkownika i hasło. Czy te nie są automatycznie dostarczane przez dane logowania użytkownika? –

+0

@ebpower: Lol, nadal go nie rozumiesz. Potrzebuję mojej aplikacji C# do zastosowania proxy do Internet Explorera/systemu operacyjnego. –

Powiązane problemy