IE の Proxy ON/OFF を切り替える

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