菜单

系统集成

相关源文件

Shadowsocks Windows 客户端通过多种方式与 Windows 操作系统集成,以提供无缝的用户体验。本文档介绍了 Shadowsocks 如何与操作系统交互,包括自动启动配置、系统代理设置管理、协议处理和电源管理集成。

有关 Privoxy 等特定代理服务的信息,请参阅Privoxy 集成

系统集成组件概述

Shadowsocks Windows 通过多个关键组件与操作系统集成,这些组件管理着系统交互的不同方面。

来源:shadowsocks-csharp/Program.cs113-114 shadowsocks-csharp/Program.cs135 shadowsocks-csharp/Program.cs187-219 shadowsocks-csharp/Program.cs83-101

自动启动管理

Shadowsocks 可以配置为在 Windows 启动时自动运行。此功能实现在AutoStartup 类中。

自动启动工作原理

自动启动系统使用 Windows 注册表来注册 Shadowsocks 以实现启动。它还与 Windows Restart Manager 集成,以便在系统更新或崩溃后重新启动应用程序。

主要功能

  • 使用可执行文件路径的哈希值创建注册表项,以避免冲突
  • 系统会自动清理旧的注册表项以确保兼容性
  • 注册 Windows Restart Manager 以在更新后自动恢复

来源:shadowsocks-csharp/Controller/System/AutoStartup.cs20-61 shadowsocks-csharp/Controller/System/AutoStartup.cs130-152 shadowsocks-csharp/Program.cs113-114

系统代理配置

Shadowsocks 可以将 Windows 系统代理设置配置为三种模式

  1. 全局代理:所有流量都通过 Shadowsocks
  2. PAC 代理:流量根据规则选择性路由
  3. 无代理:恢复原始用户设置

系统代理架构

系统代理集成使用一个原生可执行文件(sysproxy.exe)来修改 Windows Internet 设置,因为直接修改需要提升的权限。

关键组件

  • SystemProxy:控制器使用的高级接口
  • Sysproxy:管理sysproxy.exe 工具和用户设置
  • SysproxyConfig:存储用户的原始代理设置

来源:shadowsocks-csharp/Controller/System/SystemProxy.cs18-73 shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs80-138 shadowsocks-csharp/Model/SysproxyConfig.cs10-27

系统代理数据流

来源:shadowsocks-csharp/Controller/System/SystemProxy.cs18-73 shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs140-224 shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs260-289

协议处理程序(ss:// URL)

Shadowsocks 可以注册自身来处理 ss:// URL,使用户可以通过点击链接来添加服务器配置。

协议处理程序注册

协议处理程序使用 Windows 注册表将 ss:// 协议与 Shadowsocks 应用程序关联。当用户点击 ss:// 链接时,Windows 会以 URL 作为参数启动 Shadowsocks。

来源:shadowsocks-csharp/Controller/System/ProtocolHandler.cs18-63 shadowsocks-csharp/Program.cs47-70 shadowsocks-csharp/Program.cs145-154

电源管理集成

Shadowsocks 对 Windows 电源事件做出响应,以确保在系统挂起和恢复时正常运行。

当系统进入挂起模式时,Shadowsocks 会停止其服务,以防止恢复时出现网络问题。系统恢复后,它会等待 10 秒(以允许网络连接稳定)后再重新启动其服务。

来源:shadowsocks-csharp/Program.cs110 shadowsocks-csharp/Program.cs187-219

系统要求检查

Shadowsocks 在启动时会检查系统兼容性,以确保其正常运行。

该应用程序验证两个关键要求

  1. Windows Vista 或更高版本(支持双模式套接字)
  2. .NET Framework 4.8 或更高版本

来源:shadowsocks-csharp/Program.cs83-101 shadowsocks-csharp/Util/Util.cs229-232 shadowsocks-csharp/Util/Util.cs277-303

疑难解答系统集成问题

常见的系统集成问题及解决方案

问题可能原因解决方案
无法设置系统代理权限问题,与其他软件冲突使用“重置系统代理”选项,重新启动应用程序
自动启动未生效注册表权限问题,杀毒软件阻止在杀毒软件中添加例外,尝试以管理员身份运行一次
ss:// 链接无效协议处理程序未正确注册在设置中重新启用协议处理程序
应用程序在睡眠/恢复时崩溃网络适配器问题更新网络适配器驱动程序
系统代理设置丢失意外的应用程序终止设置将在下次启动时恢复

当发生系统代理错误时,应用程序将提供重置系统代理设置至默认值的选项。这通常可以解决与其他应用程序可能修改了代理设置的冲突。

来源:shadowsocks-csharp/Controller/System/SystemProxy.cs56-72 shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs121-138

与 Windows 主题的集成

Shadowsocks 可以检测并适应 Windows 系统主题(浅色/深色模式),适用于 Windows 10 版本 1903 及更高版本。

该应用程序会检查 Windows 注册表以确定当前系统主题设置,从而能够相应地调整其 UI。

来源:shadowsocks-csharp/Util/Util.cs68-94

总结

Shadowsocks Windows 深度集成了 Windows 操作系统,以提供无缝体验。系统集成组件协同工作,以管理自动启动、配置系统代理设置、处理协议 URL 以及响应系统电源事件。

了解这些集成点对于排查问题的用户和希望扩展应用程序功能性的开发人员都至关重要。