Centrum Skryptów - Systemy Operacyjne

W jaki sposób można przełączać się pomiędzy trybem z serwerem proxy, a trybem bez serwera proxy? Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

W jaki sposób można przełączać się pomiędzy trybem z serwerem proxy, a trybem bez serwera proxy?

Cześć, Skrypciarzu! W pracy musimy łączyć się z Internetem przez serwer proxy, jednak kiedy zabieram laptop do domu, proxy nie jest już mi potrzebny. Wiem, że serwer proxy można włączać i wyłączać w Opcjach internetowych w Panelu sterowania, ale czy można to robić za pomocą skryptów?

-- Witek

Cześć, Witku. Miejmy nadzieję, że można, bo jeśli nie, to zapowiada się niezwykle krótki artykuł. (Rzecz jasna wiele osób wcale by nie narzekało.) Czytelnikom którzy nie wiedzą, o co chodzi, wyjaśniamy: chodzi o opcje w dolnej części poniższego okna dialogowego (w części z nagłówkiem Serwer proxy):

To zresztą zdarza się zupełnie często: mnóstwo firm używa serwera proxy w sieciach wewnętrznych, ale w komercyjnych sieciach internetowych zdarza się to rzadko. Tak więc użytkownicy korzystający z tego samego laptopa w pracy i w domu będą ciągle włączać i wyłączać serwer proxy.

Jak zatem można to zrobić za pomocą skryptu? No cóż, okazuje się, że interesującym nas ustawieniom odpowiadają trzy wartości w rejestrze. (W oknie dialogowym widać cztery ustawienia. Nie martwcie się, wszystko zaraz wyjaśnimy.) Te trzy wartości, znajdujące się pod kluczem rejestru HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings, to:

  • ProxyEnable. Wartość typu DWORD, konfigurująca ustawienie pola wyboru Użyj serwera proxy dla sieci LAN. Jeśli wartość ta równa jest 1, serwer proxy jest włączony (tzn. pole wyboru jest zaznaczone). Jeśli równa jest 0, Internet Explorer nie będzie używać serwera proxy.

  • ProxyServer. Wartość typu REG_SZ (ciąg), konfigurująca ustawienia Adres i Port. Wartości adresu i portu muszą zostać podane w następującym formacie: adres:port. Innymi słowy: aby adresowi serwera proxy nadać wartość „myproxy”, a jako jego port ustawić port 80, ProxyServer musi mieć wartość myproxy:80.

    Wyłączenie serwera proxy nie pociąga za sobą konieczności zerowana tej wartości rejestru; jest ona używana tylko wtedy, gdy Internet Explorer używa serwera proxy. Dzięki temu nasz skrypt będzie prostszy – wystarczy ustawić wartość ProxyEnable na 0; wartości ProxyServer i ProxyOveride mogą pozostać bez zmian.

  • ProxyOverride. Wartość typu REG_SZ konfigurująca pole wyboru Nie używaj serwera proxy dla adresów lokalnych. Aby włączyć tę właściwość, wartość należy ustawić na <local>. Aby ją wyłączyć, wartość ProxyOverride powinna równać się 127.0.0.1.

    Możliwe, że wartość ProxyOverride na niektórych komputerach jest inna niż <local>. Przed uruchomieniem skryptu można sprawdzić za pomocą polecenia Regedit, jakie wartości odpowiadają włączonej i wyłączonej wartości Nie używaj serwera proxy dla adresów lokalnych.

Nadążacie? Teraz, wiedząc już jakie wartości rejestru należy skonfigurować (oraz znając sposób ich konfiguracji), możemy nie wysilając się napisać nasz skrypt WMI, w którym włączymy serwer proxy i podamy jego adres i port, oraz polecimy, by Internet Explorer nie używał serwera proxy dla adresów lokalnych:

Const HKEY_CURRENT_USER = &H80000001



strComputer = "."

Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

 

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"



strValueName = "ProxyEnable"

dwValue = 1

objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue



strValueName = "ProxyServer"

strValue = "svcproxy:80"

objRegistry.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValue



strValueName = "ProxyOverride"

strValue = "<local>"

objRegistry.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValue

Skrypt rozpoczyna się od zdefiniowania stałej o nazwie HKEY_CURRENT_USER i przypisania jej wartości &H80000001; będzie nam ona później potrzebna, by nakazać skryptowi pracę z częścią HKCU w rejestrze. Następnie łączymy się z usługą WMI, tym razem z obszarem nazw root\default i klasą StdRegProv (czyli klasą WMI służącą do odczytywania i zapisywania wartości rejestru).

Po połączeniu przypisujemy ścieżkę rejestru (SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings) zmiennej o nazwie strKeyPath; następnie przypisujemy wartość rejestru (ProxyEnable) i wartość konfiguracyjną (1) zmiennym strValueName i dwValue. Teraz mamy już wszystkie informacje potrzebne, by wywołać metodę SetDWORDValue i zmienić wartość ProxyEnable na 1:

objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue

Następnie powtarzamy ten proces dla wartości ProxyServer i ProxyOverride. Zwróćmy jednak uwagę, że obie te wartości są typu REG_SZ; dlatego zamiast metody SetDWORDValue korzystamy z SetStringValue. (Jeśli nie wiecie o co chodzi z tymi SetDWORDValue i SetStringValue, zapraszamy do części poświęconej rejestrowi (j.ang.) w przewodniku Microsoft Windows 2000 Scripting Guide.)

Jak mówiliśmy, wyłączenie serwera proxy jest dużo łatwiejsze: wystarczy ustawić wartość ProxyEnable na 0:

Const HKEY_CURRENT_USER = &H80000001



strComputer = "."

Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

 

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"



strValueName = "ProxyEnable"

dwValue = 0

objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue

Po skonfigurowaniu wszystkich ustawień serwera proxy (czyli kiedy przypisane zostaną odpowiednie wartości ProxyServer i ProxyOverride), można przełączać się pomiędzy trybem z włączonym i wyłączonym serwerem proxy po prostu konfigurując klucz rejestru ProxyEnable. Innymi słowy: kiedy mamy już adres i port serwera proxy i kiedy wiemy, co zrobić w sprawie wartości ProxyOverride wystarczy uruchomić poniższy skrypt aby ponownie włączyć serwer proxy:

Const HKEY_CURRENT_USER = &H80000001



strComputer = "."

Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

 

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"



strValueName = "ProxyEnable"

dwValue = 1

objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue

W celu wyłączenia serwera proxy wystarczy zmienić wartość ProxyEnable na 0. Łatwizna.

 Do początku strony Do początku strony


Centrum Skryptów - Systemy Operacyjne