Answers:
您需要配置一个注册表脚本,该脚本将通过“控制面板”进行通常的更改,然后合并该脚本以启用代理。您还需要一个“撤消”注册表脚本来禁用更改。
就我而言,我有两个脚本,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#
代码.. :)。感谢名单..反正
可从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
我添加了换行符(^)以提高可读性。同样,在这种情况下,它更像是每个用户的设置,而不是系统范围的设置。
^
字符不是命令的一部分。
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"
我在C#中做到了,但原理是相同的,写入注册表,因此可以将以下指令外推到line命令。它应该完成三件事:
在ProxyEnable上写入注册表“ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet设置”:1启用,0禁用
写入代理服务器上的注册表“ HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet设置”:xxx.xxx.xxx.xxxx:yyyy(xxx ...是IP,yy ..是端口)
在执行了步骤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,反之亦然,以启用和禁用代理。
创建一个批处理文件并粘贴以下内容(它将切换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