Windows 7でコマンドラインからプロキシ設定を変更する方法
私はhttp_proxy
だけについて話しているのではありません。システム全体のプロキシ設定(インターネットのプロパティ設定の設定)を設定する必要があります。それ、どうやったら出来るの?
通常はコントロールパネルから変更するレジストリスクリプトを設定してから、スクリプトをマージしてプロキシを有効にする必要があります。変更を無効にするには、 "元に戻す"レジストリスクリプトも必要です。
私の場合は、enable.regとdisable.regの2つのスクリプトがあります。
プロキシを有効にします。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"AutoConfigURL"="http://10.10.10.1/autoproxy/proxy.pac"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
"DefaultConnectionSettings"=hex:16,00,00,00,05,02,00,00,0d,00,00,00,0e,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"SavedLegacySettings"=hex:36,00,00,00,46,1a,00,00,0d,00,00,00,0e,00,00,00,32,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
プロキシを無効にします。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"AutoConfigURL"=-
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
"DefaultConnectionSettings"=hex:16,00,00,00,05,02,00,00,0d,00,00,00,0e,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"SavedLegacySettings"=hex:36,00,00,00,46,1a,00,00,0d,00,00,00,0e,00,00,00,32,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"disable"スクリプトでは、AutoConfigURLの最後にある=-
が実際にレジストリからキーを削除します。
上記の値は、この回答のために変更されています。実際の16進値ははるかに長いです。
これらのスクリプトを使用するために、それぞれ次のようなバッチファイルを用意しました。
@echo off
start /min reg import C:\Path\To\Registry\File\enable_proxy.reg
それは完全にコマンドラインから実行可能です。
http://www.ehow.com/how_6887864_do-proxy-settings-command-Prompt_.html から取得したシンプルで実用的なソリューション
プロキシ使用を有効にするコマンド:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
/v ProxyEnable /t REG_DWORD /d 1 /f
プロキシ使用を無効にするコマンド
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
/v ProxyEnable /t REG_DWORD /d 0 /f
プロキシアドレスを変更するコマンド
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
/v ProxyServer /t REG_SZ /d proxyserveraddress:proxyport /f
読みやすくするために行継続(^)を追加しました。また、この場合は、システム全体の設定よりもユーザーごとの設定に似ています。
NetSh を助けに!
NetSh winhttp set proxy
は役に立ちます。コマンドは次のとおりです。
netsh winhttp set proxy myproxy
netsh winhttp set proxy myproxy:80 "<local>bar"
netsh winhttp set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*.contoso.com"
私はC#でそれをやったが、哲学は同じで、レジストリに書いているので、以下の命令は行コマンドに外挿することができる。それは3つのことをしなければならない:
ProxyEnableでレジストリ "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"に書き込みます。有効にするには1、無効にするには0
ProxyServerで、レジストリ "HKCU¥Software¥Microsoft¥Windows¥CurrentVersion¥Internet Settings"に書き込みます。xxx.xxx.xxx.xxxx:yyyy(xxx ...はIP、yy ..はポートです)
手順1と2を実行すると、プロキシの有効化とIPとポートをレジストリに書き込むようになりますが、ブラウザを開くと、それで十分ではないことに気付くでしょう。まだナビゲートすることはできません。 3番目のステップは、接続設定に関するレジストリを変更することです。
"DefaultConnectionSettings"の "ソフトウェア\ Microsoft\Windows\CurrentVersion \インターネット設定\接続".
このレジストリには(少なくともW7では)204バイトありますが、変更する必要があるのはバイト8(バイト0が最初であるため9番目)だけです。バイト8の値には、プロキシの有効化/無効化に関する情報だけでなく、他の機能に関する情報も含まれています。
//09 when only 'Automatically detect settings' is enabled
//03 when only 'Use a proxy server for your LAN' is enabled
//0B when both are enabled
//05 when only 'Use automatic configuration script' is enabled
//0D when 'Automatically detect settings' and 'Use automatic configuration script' are enabled
//07 when 'Use a proxy server for your LAN' and 'Use automatic configuration script' are enabled
//0F when all the three are enabled.
//01 when none of them are enabled.
私の場合は、「設定を自動的に検出する」が常に有効になっているので、バイト8の値を09から0Bに、またその逆にプロキシを有効または無効にします。
バッチファイルを作成し、以下の内容を貼り付けます(プロキシの状態が切り替わります)。
@echo off
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable') DO SET currentProxy=%%B
rem ECHO currentProxy=%currentProxy%
if %currentProxy%==0x1 (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
echo Proxy Disabled
) else (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
echo Proxy Enabled
)
pause