web-dev-qa-db-ja.com

IEレジストリ経由でプロキシ設定を有効/無効にする

IEの実行中にIEプロキシ設定を有効/無効にする必要があります。プロキシを有効にするPowerShellスクリプト行があります。

Set-ItemProperty -Path "Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ProxyEnable -value 1


またはこれを無効にするには:

Set-ItemProperty -Path "Registry::HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ProxyEnable -value 0


上記のスクリプトは機能し、レジストリキーが更新されます。ただし、IEは、開いているすべてのIEウィンドウを閉じて新しいウィンドウを開くまで、値を取得しません。新しい設定を取得するには、IEウィンドウを既に開いているか実行している必要があります。

私が望むものを達成する方法はありますか?

9
Oscar

問題は、IEは次のいずれかまでプロキシ設定をリセットしないことです。

  1. 閉じます、または
  2. 構成が更新されます。

以下は、これを機能させるために使用したコードです。

function Refresh-System
{
  $signature = @'
[DllImport("wininet.dll", SetLastError = true, CharSet=CharSet.Auto)]
public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength);
'@

$INTERNET_OPTION_SETTINGS_CHANGED   = 39
$INTERNET_OPTION_REFRESH            = 37
$type = Add-Type -MemberDefinition $signature -Name wininet -Namespace pinvoke -PassThru
$a = $type::InternetSetOption(0, $INTERNET_OPTION_SETTINGS_CHANGED, 0, 0)
$b = $type::InternetSetOption(0, $INTERNET_OPTION_REFRESH, 0, 0)
return $a -and $b
}
6
user6730445

下のプロキシ値を変更する

[HKEY_USERS\<your SID>\Software\Microsoft\Windows\CurrentVersion\Internet Settings]

すなわち再起動する必要はありません

4
Loïc MICHEL