在Windows 7中,如何从命令行更改代理设置?


Answers:


15

您需要配置一个注册表脚本,该脚本将通过“控制面板”进行通常的更改,然后合并该脚本以启用代理。您还需要一个“撤消”注册表脚本来禁用更改。

就我而言,我有两个脚本,enable.reg和disable.reg:

启用代理:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"AutoConfigURL"="http://10.10.10.1/autoproxy/proxy.pac"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
"DefaultConnectionSettings"=hex:16,00,00,00,05,02,00,00,0d,00,00,00,0e,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"SavedLegacySettings"=hex:36,00,00,00,46,1a,00,00,0d,00,00,00,0e,00,00,00,32,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

禁用代理:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"AutoConfigURL"=-

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections]
"DefaultConnectionSettings"=hex:16,00,00,00,05,02,00,00,0d,00,00,00,0e,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"SavedLegacySettings"=hex:36,00,00,00,46,1a,00,00,0d,00,00,00,0e,00,00,00,32,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

在“禁用”脚本中,=-AutoConfigURL末尾的实际上是从注册表中删除密钥。

请注意,为解决此问题,您在上面看到的值已修改。实际的十六进制值要长得多。

要使用这些脚本,我为每个脚本都有一个批处理文件,如下所示:

@echo off
start /min reg import C:\Path\To\Registry\File\enable_proxy.reg

从命令行完全可以使用。


我最终做了这样的事情。我不知道如何从批处理脚本操作注册表,所以我为此写了c#代码.. :)。感谢名单..反正
插脚

这似乎对我不起作用。我是否真的应该在“ LAN设置”中看到“使用自动配置脚本”框被打勾和取消勾号?
乔尼2015年

@prongs我怀疑您将共享该C#代码...对吗?
tisaconundrum

61

可从http://www.ehow.com/how_6887864_do-proxy-settings-command-prompt_.html检索到的简单有效的解决方案

启用代理使用的命令:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
    /v ProxyEnable /t REG_DWORD /d 1 /f

禁用代理使用的命令:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
    /v ProxyEnable /t REG_DWORD /d 0 /f

更改代理地址的命令:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ^
    /v ProxyServer /t REG_SZ /d proxyserveraddress:proxyport /f

我添加了换行符(^)以提高可读性。同样,在这种情况下,它更像是每个用户的设置,而不是系统范围的设置。


3
IMO,这是对该问题的实际答案。感谢@sayap
kmonsoor 2012年

4
+1。这是我的一个更优雅的解决方案。

3
注意:^字符不是命令的一部分。
约书亚德雷克

6
但是,浏览器在打开“ LAN配置”窗口之前不会导航。当我使用这种方法时,至少在我身上会发生这种情况。我这样做是为了唤醒浏览器,该浏览器会更改代理,只有在此之后,连接才起作用。
马科斯·卡夏诺

1
@Cricrazy我想这就是您想要的
Narzard '16

27

NetSh进行救援!

NetSh winhttp set proxy 应该会有所帮助。以下是命令:

netsh winhttp set proxy myproxy

netsh winhttp set proxy myproxy:80 "<local>bar"

netsh winhttp set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*.contoso.com"


使用netsh清除代理:netsh winhttp重置代理
Kevin Dryger,2012年

9
我认为这仅适用于使用WinHTTP库的应用程序。经过快速测试后,我的系统上似乎没有任何常见的应用程序使用它。
sayap 2012年

4

我在C#中做到了,但原理是相同的,写入注册表,因此可以将以下指令外推到line命令。它应该完成三件事:

  1. 在ProxyEnable上写入注册表“ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet设置”:1启用,0禁用

  2. 写入代理服务器上的注册表“ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet设置”:xxx.xxx.xxx.xxxx:yyyy(xxx ...是IP,yy ..是端口)

  3. 在执行了步骤1和2之后,您将编写注册表来激活代理以及IP和端口的激活,但是如果您打开浏览器,您会发现它还不够,您还无法导航。第三步包括更改有关连接设置的注册表:

“ DefaultConnectionSettings”上的“ Software \ Microsoft \ Windows \ CurrentVersion \ Internet设置\ Connections”。

请注意,尽管(至少对于W7)此注册表中有204个字节,但您只需要修改字节8(第9个字节,因为第0个字节是第一个)。字节8值不仅包含有关代理启用/禁用的信息,而且还包含其他功能:

        //09 when only 'Automatically detect settings' is enabled 
        //03 when only 'Use a proxy server for your LAN' is enabled
        //0B when both are enabled
        //05 when only 'Use automatic configuration script' is enabled
        //0D when 'Automatically detect settings' and 'Use automatic      configuration script' are enabled
        //07 when 'Use a proxy server for your LAN' and 'Use automatic configuration script' are enabled
        //0F when all the three are enabled. 
        //01 when none of them are enabled. 

就我而言,始终启用“自动检测设置”,因此我将字节8的值从09切换到0B,反之亦然,以启用和禁用代理。


1
我在SO上找到了一个答案,该答案使用powershell更新了DefaultConnectionSettings设置。我认为这可能对某人有用。 stackoverflow.com/a/15914470/1158180
paulH,2018年

2

创建一个批处理文件并粘贴以下内容(它将切换Proxy状态),

@echo off

FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable') DO SET currentProxy=%%B
rem ECHO currentProxy=%currentProxy%

if %currentProxy%==0x1 (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
echo Proxy Disabled
) else (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
echo Proxy Enabled
  )

pause

1
这与@sayap的答案非常相似。

-3

我希望我在这里为您指明了正确的方向,但是,如果您尝试通过“ Internet选项”访问代理设置,只需打开开始菜单并键入“ internet option”(任何设置或应用程序,您都可以通过这种方式找到例如“代理”)。然后,您应该识别此菜单,并能够添加所需的设置。


1
老兄...您没有正确看到标题...我知道您要告诉我什么。我想从命令行执行。
插脚

对不起,老兄,好像哥们把你们都搞定了
卢克·罗素
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.