在批处理脚本中更改注册表值后如何强制更新代理设置?

在批处理脚本中更改注册表值后如何强制更新代理设置?

在批处理脚本中,我更新注册表值使用REG命令禁用手动代理。

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f

然而,这直到我打开代理设置才生效Windows 中的页面 (开始菜单 > 更改代理设置)。我所要做的就是打开页面,属性就会正确更新。

有没有办法在不打开网络设置的情况下重新加载/更新此设置?

答案1

此链接表明无法做到这一点:https://superuser.com/a/944980/916597

不幸的是,没有简单的方法。正如你所注意到的,你缺少神奇的“立即读取这些设置”命令:

请注意,在链接中,答案提到可能有一种方法可以在 PowerShell 中执行此操作,但这并不能回答这个问题。不过,如果您感兴趣,请去查看。

答案2

使用 vbs 脚本启用/禁用代理时我遇到了同样的问题。

我刚刚添加了这个:

Shell.运行“ms-settings:网络代理”

WScript.睡眠 1000

Shell.Run“taskkill /f /im SystemSettings.exe”,,True

它会打开代理设置,等待 1 秒,然后关闭它。这将确保您的代理更改有效。

答案3

我创建了简单的 CLI 工具,用于强制重新加载 IE 代理设置。它调用 WININET.DLL InternetSetOption 函数,如下所述: https://superuser.com/a/944980/916597

从这里下载: https://gofile.io/?c=ol4zE7

在 W7 和 W10 上测试过。

答案4

需要强制更新系统设置,iexplore 会为您完成:

REM 在一个文件中启用/禁用系统代理

@echo 关闭

设置 home_key="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet 设置"

FOR /F “tokens=3” %%L IN ('reg query %home_key% /v ProxyEnable') DO SET currentProxy=%%L

如果 %currentProxy% == 0x1 则关闭

如果 %currentProxy% == 0x0 则转到开启

:关

reg 添加 %home_key% /v ProxyEnable /t REG_DWORD /d 0 /f

SET proxy="代理已禁用"

转到 EOF

:打开

reg 添加 %home_key% /v ProxyEnable /t REG_DWORD /d 1 /f

SET proxy="代理已启用"

转到 EOF

:EOF REM 重新启动 Internet Explorer 以使更改生效

启动/w/b iexplore.exe

超时 2 /nobreak

taskkill /f /im iexplore.exe

回显%代理%

相关内容