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, чтобы подобрать новую настройку.
Был бы какой-нибудь способ добиться того, чего я хочу?
3 ответа
Проблема в том, что IE не будет сбрасывать настройки прокси до тех пор, пока
- закрывается или
- обновлена конфигурация
Ниже приведен код, который я использовал, чтобы заставить это работать:
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
}
Изменение значения прокси под
[HKEY_USERS\<your SID>\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
не нужно перезапускать т.е.
Я знаю, что это старый вопрос, однако вот простой однострочный, чтобы включить или выключить его в зависимости от его текущего состояния:
set-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -name ProxyEnable -value (-not ([bool](get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' -name ProxyEnable).proxyenable))