This repository has been archived by the owner on Nov 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
[Feature] 支持在使用拨号连接(VPN)时正确设置 Windows 系统代理 #833
Labels
enhancement
New feature or request
Comments
吐槽一下 Windows 在代理方面的混乱:光是代理设置就分了 IE 代理设置(浏览器和大多数应用)和 WinHttp 代理设置,然后每个拨号连接的 IE 代理设置又是独立的,并且没法用设置 - 网络和 Internet - 代理去统一修改 辛苦作者了~ |
事实上我找到这个例子也不能正确处理拨号连接的情况: const KEY_PATH: &str =
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Connections";
const KEY_PATH_WOW6432: &str =
"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Connections";
pub const DEFAULT_CONNECTION_NAME: &str = "DefaultConnectionSettings";
pub const WINHTTP_CONNECTION_NAME: &str = "WinHttpSettings"; 这个项目只处理了 Connections 下的 DefaultConnectionSettings 和 WinHttpSettings 两个键,但当存在拨号连接的时候会有更多键,必须进行设置 而且不能删除图中的 ZJUVPN 键从而使用默认值——系统会重新创建这个键 |
也许可以直接调用这个来实现: |
完美复现问题了,等待作者解决 |
Closed
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Is your feature request related to a problem? Please describe.
当前版本处理 Windows 系统代理的方式过于简单,无法在使用拨号连接(例如 L2TP VPN)时正确设置系统代理
已经有用户反馈过此问题,见 #412
目前 clash verge 处理 Windows 系统代理的核心代码如下:
https://github.com/zzzgydi/sysproxy-rs/blob/41c765d8ad55f307521716771a990d2aa5f4b5df/src/windows.rs#L42
这一方法可以在使用路由器等无需拨号的环境下正常修改系统代理设置。但 Windows 对于 L2TP VPN 等拨号连接的代理设置是独立的,储存在
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections
对应的 GUI 设置方法为:Internet 选项 - 连接
在注册表中,代理设置以二进制形式存储:
由于拨号连接的设置是独立的,此时更改
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
中的设置对HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections
无效可以参考:https://myth.cx/p/windows-proxy/
Describe the solution you'd like
考察了三个较为流行的客户端:
以上三个都调用了:https://github.com/Noisyfox/sysproxy
C++ API 的实现可以参考:https://github.com/Mythologyli/ZJU-Connect-for-Windows/blob/e7e6cbaaffb425e850a1580b46c9a552b48148c1/utils/utils.cpp#L48
也有一个 rust 的实现作为参考(不过这个只处理了默认连接):https://github.com/vbfox/proxyconf/blob/master/src/proxyconf/internet_settings/modern/registry.rs
The text was updated successfully, but these errors were encountered: