IE の環境で。Proxy ON なら OFF に、OFF なら ON に、トグルで切り替えるバッチファイル
@echo off rem ------------------------------------------------- rem Proxy ON/OFF をトグルで rem ------------------------------------------------- for /F "tokens=3" %%i in ('reg QUERY "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable ^| findstr REG_DWORD') do set Result=%%i rem 条件分岐 if '%Result%'=='0x0' goto Set_ON if '%Result%'=='0x1' goto Set_OFF goto :eof :Set_ON rem ---------------------------------------------------- rem ■ProxyをONにする rem ---------------------------------------------------- reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1 ieset.exe goto :eof :Set_OFF rem ---------------------------------------------------- rem ■ProxyをOFFにする rem ---------------------------------------------------- reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0 ieset.exe goto :eof :eof
レジストリの中身を変えただけでは、現在動作中のプロセスには変更が伝わらない。コレを伝えてあげるのが、バッチファイルの中で呼び出してる ieset.exe。作り方は以下の通り
#include#pragma comment(lib, "wininet.lib") main(){ InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0); }
こいつをコンパイル$ g++ ieset.cpp -lwininet -o ieset.exe