Repository navigation
Releases: YanGLweI/WinSLA
Release list
WinSLA v2.2.8
WinSLA v2.2.8
发布日期: 2026-09-10
🛡️ 兼容性说明
向后兼容性
✅ 完全向后兼容
- 安装路径、注册表位置无变化
- 配置文件格式无变化
- 现有功能不受影响
- 可平滑升级无需额外操作
环境要求
- ✅ Windows 10/11 64 位
- ✅ Rust toolchain v1.70+ (当前 v1.97.1)
- ✅ NSIS (makensis) v3.x
📋 升级指南
适用对象
所有正在使用 WinSLA v2.2.6 或 v2.2.7 的用户
建议操作
-
备份当前配置(可选):
Copy-Item "$env:LOCALAPPDATA\WinSLA\winsla.db" "backup\winsla-backup.db"
-
卸载旧版本:
# 通过控制面板或通过安装程序自带的卸载程序 -
安装新版本:
- 下载: https://github.com/YanGLweI/WinSLA/releases/tag/v2.2.8
- 运行
WinSLA-v2.2.8-Setup.exe - 授权管理员权限
-
验证安装:
- 打开 WinSLA 管理端
- 检查仪表盘 → 服务状态 → 应显示 "版本 v2.2.8"
🔗 相关链接
- GitHub Releases: https://github.com/YanGLweI/WinSLA/releases/tag/v2.2.8
- Issue 报告: https://github.com/YanGLweI/WinSLA/issues
- 完整文档: https://github.com/YanGLweI/WinSLA/blob/master/README.md
📜 许可证
MIT License - © 2026 ylw
如有任何问题,请提交 Issue 或在讨论区留言。
WinSLA v2.2.7 - Critical Bug Fixes
WinSLA v2.2.7 发布说明
🎯 版本概述
本次发布包含 5 个关键 Bug 修复,所有问题均已通过虚拟机实机测试和浏览器自动化测试验证。
✅ 已修复问题
Bug #1 - 应急账号提醒时机优化
- 问题: 创建主账号后立即弹出应急提醒对话框,打断配置流程
- 修复: 延迟到第一条完整配对关系配置完成(至少添加一个审批人)后才提示
- 影响: 改善用户体验,避免初次设置时过早中断
Bug #2 - JSON 反序列化错误
- 问题: 切换开关状态时报错
invalid type: boolean 'false', expected i64 - 根因: 前端发送布尔值而后端期望 i64 (0/1)
- 修复: 更新前端使用 native fetch API 发送整数 0/1 而非 true/false
- 影响: Switch Toggle 功能正常工作,控制台无错误
Bug #3 - 标签页切换自发消息
- 问题: 在 Dashboard 和 Pair Rules 页面间切换时会无缘无故弹出成功/错误消息
- 修复: 移除不必要的状态更新并优化 load() 函数行为
- 影响: UI 更干净,无弹窗干扰
Bug #4 - 删除最后一条配对后自动启用默认 Tile
- 问题: 删除所有配对规则会保持 Windows 默认 Tile 关闭,可能导致用户被锁死
- 修复: 实现 accounts.length === 0 时的自动 API 调用来启用默认 Tile
- 影响: 防止系统锁死场景,保持登录可访问性
Bug #5 - 新增第二个主账号时审批人对话框报错 422
- 问题: 已有配对关系时创建第二个主账号,提交审批人时出现 HTTP 422 错误
- 根因: 后端响应结构在第一对配对(嵌套)和后续配对(直接)间不同
- 修复: 正确识别并处理两种响应类型
- 影响: 可成功创建多个带审批人的主账号
🔧 变更内容
- 管理端 package.json 版本号从 2.2.0 升级到 2.2.7
- NSIS 安装程序脚本更新至 v2.2.7
- 优化 handleAddAccount 函数正确处理嵌套响应
🧪 测试验证
所有修复均通过以下测试验证:
- ✅ 浏览器自动化测试 (Chrome DevTools MCP)
- ✅ 端到端场景测试
- ✅ Test-Win 虚拟机实机安装测试
- ✅ 多个边缘场景测试
📦 安装方式
下载 WinSLA-v2.2.7-Setup.exe 并以管理员身份运行。安装程序将:
- 复制所有二进制文件到
C:\Program Files\WinSLA - 注册 Credential Provider CLSID
- 安装并启动 Windows 服务
- 创建桌面和开始菜单快捷方式
⚠️ 重要提示
此版本修改了系统登录流程。生产环境部署前请务必在虚拟机中测试。确保准备好应急恢复脚本 (scripts\emergency-recovery.ps1)。
有关更多详情,请查看仓库中的 CHANGELOG.md 文件。
WinSLA v2.2.5
v2.2.5 更新内容
新增:密码过期自定义模态对话框(替代动态 Tile 方案)
经多轮实测,LogonUI 在序列化阶段存在硬性限制(CredentialsChanged 返回 E_ELEMENT_NOT_FOUND、缓存初始字段布局、CPGSR_RETURN_NO_CREDENTIAL_FINISHED 跳过状态消息),Tile 内动态切换字段方案不可行。本版本改为在密码过期时立即弹出自定义模态对话框:
- 主账号 / 审批人任一账号密码过期,点击提交后立即弹出「修改密码」对话框(不依赖 LogonUI 刷新)
- 支持取消 / ESC / 关闭按钮返回登录界面
- 改密成功后新密码自动填入对应账号密码字段,再次点击提交即可登录
- 错误提示(旧密码不正确 / 两次输入不一致 / 域密码策略不符合等)在对话框内显示
- 登录界面正常模式无任何密码修改字段,双控 / 应急登录流程不受影响
修复
- 修复修改密码弹窗在部分环境(高 DPI / RDP 会话)下高度不足、底部按钮被裁切的问题:
AdjustWindowRectEx按客户区尺寸反算窗口外框,保证所有控件完整显示- 全部控件坐标按系统 DPI 缩放,100% / 125% / 150% 缩放下布局正常
安装包
WinSLA-v2.2.5-Setup.exe(约 5.4 MB),以管理员身份运行
WinSLA v2.2.3
WinSLA v2.2.3
修复
- 登录界面 UX 回归修复:默认 Tile 恢复为「双控登录」,图标正常显示。
ICredentialProviderCredential2的 QueryInterface 现按场景区分(登录场景不暴露该接口),GetUserSid仅双控 Tile 返回被锁用户 SID,避免应急 Tile 被 LogonUI 误选为解锁界面默认。 - 本地锁屏解锁修复:双控 Tile 在本地
Win+L解锁场景现已可正常解锁(CredPack 明文序列化 + 被锁会话 LogonId 修正 + SID 匹配)。
已知平台限制与优雅降级
- RDP 会话解锁降级:经系统性实测(Windows 11 25H2 / Build 26100,6 轮序列化变量实验 + 安全审计取证),Windows 在 RDP 会话解锁场景对第三方 Credential Provider 存在未文档化的区别对待:内置提供程序的凭据以
LogonType=7 (Unlock)提交 LSA 并成功;第三方提供程序的提交走 RemoteInteractive 路径,在 LSA 入口即失败(0xC000006D / 0xC00000E5),且不产生任何审计事件。缓冲格式、认证包(Negotiate/Kerberos 直选)、LogonId、SID 匹配等全部变量均已排除——与 CP 代码无关。 - 行为变化:RDP 会话的锁屏解锁(断线重连 / 会话内
Win+L)自动隐藏双控 Tile,解锁界面显示 Windows 原生密码登录(单因素),不再出现"提交必失败"的死锁。 - 不受影响的场景:本地登录、本地
Win+L解锁、RDP 全新登录(无既有会话)均为完整双控。
⚠️ 安全建议
需要使用双控登录的敏感区域,建议不要启用远程桌面——物理控制台的登录与解锁均为完整双控;RDP 已建立会话的解锁受 Windows 平台限制只能单因素。双控语义仍覆盖「进入会话」的全部路径(本地登录、RDP 全新登录)。
安装
下载 WinSLA-v2.2.3-Setup.exe 以管理员身份运行。升级安装前建议阅读 README 的应急恢复章节。
WinSLA v2.2.1
WinSLA v2.2.1
修复
- 修复 RDP 远程桌面场景双控登录失败:凭证提供程序(CP)序列化登录凭据时,改为严格使用服务端验证通过后返回的 canonical 登录名(
DOMAIN\user/MACHINE\user),禁止在 CP 侧剥离或重建域名前缀。根治以下场景的 LSA 登录拒绝:- 工作组机器被错误拼接
WORKGROUP\user前缀 .\user显式本地账号被强制改写为域前缀- UPN 格式(
user@domain.com)被拆解重建 - 可信域账号域名被替换为本机所在域
- 裸名本地账号被误判为域账号
- 工作组机器被错误拼接
变更
- 认证协议扩展:
AuthResponse::Success携带canonical_username字段;AuthRequest新增logon_source字段(console/rdp-session-N),复用审计记录的客户端主机列,无数据库结构变更 - 服务端新增 canonical 化:裸名按 LogonUserW 查找顺序解析(先本机 SAM,后加入域前缀);
NetGetJoinInformation严格检查buf_type,工作组环境不再误拼域名 - CP 诊断增强:登录失败时 Tile 直接显示 NTSTATUS 中文原因(账号不存在 / 密码错误 / 工作站限制 / 登录类型未授权等);trace 日志增加会话 ID、远程标记(
session=N remote=true/false)与 canonical 名,便于远程排障 - 双端
com_types.rs协议定义保持一致
升级说明
- 安装升级后请执行
scripts\flush-cp-cache.ps1并重启系统,确保 LogonUI 加载新版 DLL - 旧版本配对关系与审计数据完整保留,无需重新配置
WinSLA v2.2.0
WinSLA v2.2.0
新增功能
- 仪表盘新增"近 7 天登录趋势"柱状图(ECharts)
- 仪表盘新增"登录状态趋势"环形饼图,柔和配色(浅蓝 #5dade2 成功 / 浅红 #ec7063 失败),底部图例标注,hover 显示百分比
- 新增每日统计 API:
GET /api/stats/daily
修复
- 修复每日统计 SQL 参数绑定错误(
'-?1 days'字符串字面量不替换参数导致近7天查询无数据) - 修复前端
getDailyStats未导入导致柱状图不渲染(ReferenceError) - 修复柱状图 X 轴日期旋转逻辑:固定横向显示,月/日格式(如 7/30)
- 修复全项目版本号不一致问题(管理端"服务状态"此前显示旧版本)
变更
- 全项目版本号统一为 2.2.0(Cargo.toml × 4、package.json、package-lock.json、tauri.conf.json、README badge、NSIS 脚本、VERSIONINFO 资源、UAC manifest)
- 柱状图标题居中、grid 布局紧凑化
- 移除仪表盘调试日志
安装
下载 WinSLA-v2.2.0-Setup.exe,以管理员身份运行安装。
WinSLA v2.1.5 - 应急处理指南与弹窗自动聚焦优化
WinSLA v2.1.5 更新内容
🎯 核心功能改进
1. 应急处理指南完善
- 新增完整的应急处理方式文档(README.md)
- 服务进程崩溃恢复步骤
- 服务卡死强制重启方法
- AD/LDAP 网络不可达时的离线缓存使用
- 无法进入桌面时的安全模式恢复
- 完全卸载流程
- 提供详细的命令行操作示例
- 包含调试与诊断技巧
2. 用户界面优化
- 弹窗自动聚焦功能
- 新增配对规则对话框自动聚焦到主账号用户名输入框
- 新增应急账号对话框自动聚焦到用户名输入框
- 使用
ref+nextTick()+setTimeout()确保正确聚焦
3. 策略管理增强
- 应急原因策略动态加载
- 管理端保存策略时即时写入注册表
- CP 端动态读取
EmergencyRequiresReason策略 - 支持运行时切换是否需要填写应急原因
- 默认启用应急原因必填(
EmergencyRequiresReason=1)
🔧 技术改进
- 代码质量
- 修复 Settings.vue 硬编码默认值问题
- 优化表单数据加载逻辑(从数据库动态加载)
- 改进组件 ref 使用方式
📦 安装包信息
- 文件名:
WinSLA-v2.1.5-Setup.exe - 大小: 约 4.8 MB
- 支持系统: Windows 10/11 x64
- 安装方式: 管理员权限运行
⚠️ 重要提醒
- 安装前请阅读 应急处理指南
- 建议在虚拟机中测试后再部署到生产环境
- 安装后需要重启系统以应用更改
- 确保有恢复手段(安全模式 + 应急卸载脚本)
📝 升级说明
从 v2.1.4 升级:
- 卸载旧版本(控制面板 → 程序和功能)
- 重启计算机
- 安装新版本
- 再次重启计算机
🐛 已知问题
- 无
📚 相关文档
- README.md - 项目说明和应急处理指南
- ARCHITECTURE.md - 技术架构详解
完整变更日志: v2.1.4...v2.1.5
WinSLA v2.1.4
WinSLA v2.1.4
版本亮点
本版本引入 DefaultTile 与配对规则联动安全策略,解决"未配置配对规则时禁用默认 Tile 导致无法登录系统"的锁死风险,并修复三项测试中发现的问题。
新增功能
DefaultTile 与配对规则联动
- 安装后默认启用 Windows 默认登录 Tile,保障未配置配对规则时可正常登录
- 添加第一条配对规则后自动禁用默认 Tile,并弹窗引导配置应急账号
- 删除最后一条配对规则后自动恢复默认 Tile,防止意外锁死
- 无配对规则时手动禁用默认 Tile,需二次确认(明确提示"WinSLA 服务异常可能导致无法登录系统"风险)
安全修复
- 修复策略默认值不一致:win_service 与管理端的
default_tile_enabled默认值不一致(false vs true),导致全新安装后策略同步线程将注册表覆盖为禁用,管理端显示与实际行为割裂 - 修复双控登录绕过:无配对规则时任意两个有效域账号即可通过 WinSLA 双控登录,现改为拒绝并提示"系统未配置配对规则,请使用 Windows 默认登录方式"
- 修复开关状态未恢复:策略配置中取消禁用默认 Tile 后,开关停留在禁用位置(ElMessageBox confirm 取消分支未正确处理)
改进
- 最大重试次数默认值由 3 次调整为 5 次(管理端、服务端、前端表单五处统一)
- 应急账号对话框支持回车键验证账号,与配对规则页面交互一致
安装包
WinSLA-v2.1.4-Setup.exe— NSIS 安装程序(含 Credential Provider、认证服务、管理端)
升级说明
- 建议先卸载旧版本再安装;卸载不会删除共享数据库,已保存的策略与配对规则将保留
- 新默认值(默认 Tile 启用、重试 5 次)仅对全新安装或从未保存过策略的环境生效
WinSLA v2.1.0
WinSLA v2.1.0
Windows 双账号认证系统 - 默认登录 Tile 策略控制正式版
新功能
默认登录 Tile 隐藏策略
- 通过 Credential Provider Filter 实现 Windows 默认登录 Tile 的隐藏/显示控制
- 管理端"系统设置"页面新增"默认登录 Tile"开关(默认关闭,即隐藏 Windows 默认登录方式)
- 安装时自动写入默认策略注册表,安装后立即生效,无需手动配置
- 策略保存即时生效:管理端保存时同时写入数据库和注册表
管理端 UAC 自动提权
- 管理端启动时自动弹出 UAC 授权框,用户确认后以管理员权限运行
- 确保策略修改能立即写入系统注册表
- 修复管理端 exe 资源段缺失问题(版本信息、图标、manifest 正确嵌入)
安装说明
- 下载
WinSLA-v2.1.0-Setup.exe - 以管理员身份运行安装程序
- 安装完成后重启系统或注销
- 登录界面将只显示 WinSLA 双控登录和应急登录(默认隐藏 Windows 默认登录 Tile)
组件说明
- DualAuthCP.dll - Credential Provider(含 Filter,隐藏默认 Tile)
- winsla-service.exe - 后台认证服务(策略同步、审计日志)
- winsla-management.exe - 管理端(UAC 自动提权,策略即时生效)
验证方式
- 登录界面默认只显示双控登录和应急登录 Tile
- 管理端开启"默认登录 Tile"后,锁屏即可看到 Windows 默认登录方式
- 注册表验证:
HKLM\SOFTWARE\WinSLA\Policy\DefaultTileEnabled(0=隐藏,1=显示)
WinSLA v2.0.9 - 安全审查修复
WinSLA v2.0.9 - 安全审查修复
🔒 安全加固
本版本基于代码审查四维标准进行全面安全加固:
1. 明文密码内存处理与清理 ✅
- 使用
zeroize::Zeroizing<Vec<u16>>包装所有敏感字段 - 涉及字段:
user_a_pass、user_b_pass、emergency_reason、serialized_pass - 析构时自动零化内存,防止敏感数据残留
2. 锁定计数并发安全 ✅
- 添加 SQLite
busy_timeout(5s)防止并发访问 "database is locked" 错误 - 增强
login_attempts表操作日志(显示更新行数,便于调试)
3. COM vtable 字段索引正确性 ✅
- 验证通过,无需修改
- 20字段 CredentialVTable、11字段 ProviderVTable、独立 SetUserArrayStub 均正确
4. 应急路由授权匹配边界 ✅
- 细化审计结果码:
emergency_denied_policy- 策略禁用emergency_denied_unauthorized- 未授权账号emergency_denied- 其他拒绝原因
📦 安装包
WinSLA-v2.0.9-Setup.exe (4.98 MB)
🔄 升级说明
- 卸载旧版本(控制面板 → 程序和功能)
- 安装 v2.0.9
- 重启计算机使 Credential Provider 生效
⚠️ 重要提示
- 安装后会影响系统登录流程,请确保在测试环境中操作
- 域账号验证需使用
DOMAIN\user或 UPN 格式输入 - 裸用户名走本地 SAM 验证
📋 完整变更日志
cp_provider: 添加 zeroize 依赖,敏感字段内存零化win_service: SQLite busy_timeout、审计日志细化、锁定计数日志增强installer: 版本号升级至 2.0.9
完整代码变更: v2.0.8...v2.0.9