IE通过registry启用/禁用代理设置

在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 

上面的脚本工作,registry项被更新。 但是,IE浏览器不会拿起价值,直到我closures所有打开的IE窗口,并打开一个新的。 我需要打开/运行IE窗口来获取新的设置。

有什么方法可以达到我想要的吗?

修改代理值

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

不需要重新启动即

问题是,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 } 

我知道这是一个古老的问题,但是这里是一个简单的单行程序来打开或关闭,取决于它的当前状态:

 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))