windows - IE 通过注册表启用/禁用代理设置

标签 windows internet-explorer powershell 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


以上脚本有效,注册表项得到更新。但是,在我关闭所有打开的 IE 窗口并打开一个新窗口之前,IE 不会获取该值。我需要已经打开/正在运行的 IE 窗口来选择新设置。

有什么方法可以实现我想要的吗?

最佳答案

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

关于windows - IE 通过注册表启用/禁用代理设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568502/

相关文章:

windows - cat 未被识别为内部或外部命令

c# - 如何使用扩展验证证书以编程方式签署 HCK 提交

JQuery 隐藏选项在 IE 和 Safari 中不起作用

powershell - Powershell 中的 Write-Output 对对象调用的默认方法是什么?

azure - 使用 Get-AzTable Powershell 脚本访问 Azure 表中的数据时出错

windows - 检索powershell中日期范围内修改的文件的完整路径和文件权限

java - 运行可执行的 .jar 文件并在 Windows 登录之前确认运行以隐藏对 Windows 桌面的访问

html - anchor 链接内的按钮在 Firefox 中有效,但在 Internet Explorer 中无效?

css - 字体无法在 IE 9 和 11 上加载

powershell - 为什么 `using` 范围可以在本地与 Start-Job 一起使用,但不能与 Invoke-Command 一起使用?