我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

FaceWinUnlock-Tauri项目结构全解析:UI、Server、Unlock三大模块架构设计

FaceWinUnlock-Tauri项目结构全解析:UI、Server、Unlock三大模块架构设计 FaceWinUnlock-Tauri项目结构全解析UI、Server、Unlock三大模块架构设计【免费下载链接】FaceWinUnlock-Tauri一款基于 Tauri 框架开发的现代化 Windows 面容识别解锁增强软件。它通过自定义 Credential Provider (DLL) 注入 Windows 登录界面结合前端 Vue 3 和后端 OpenCV 人脸识别算法为用户提供类似 Windows Hello 的解锁体验。项目地址: https://gitcode.com/gh_mirrors/fa/FaceWinUnlock-TauriFaceWinUnlock-Tauri是一款基于 Tauri 框架开发的 Windows 面容识别解锁增强软件通过自定义 Credential Provider DLL 注入 Windows 登录界面让不支持 Windows Hello 的普通摄像头也能看一眼就解锁电脑。它的代码仓库由UI、Server、Unlock 三大模块组成理解这三块如何分工与协作是读懂整个项目结构的第一步。本文用一张架构图级的思路带你快速看懂这个项目的架构设计。️ 项目总览三大模块各管一摊打开仓库根目录你会看到三个核心目录和一个素材目录职责划分非常清晰模块定位技术栈UI/用户看得见的主程序设置、面容管理、日志Vue 3 Rust (Tauri)Server/注入登录界面的凭据提供程序 DLLRust Win32 COMUnlock/后台面容识别核心服务Rust OpenCVdata/官方文档截图素材PNG一句话概括三者的关系UI 负责管理和配置Unlock 负责看脸Server 负责替你把密码交给 Windows。下面逐个拆解。️ UI模块Tauri 桌面主程序UI 是用户日常交互的入口采用经典的 Tauri 分层结构——前端负责界面Rust 后端负责系统级操作。前端Vue 3 页面与状态管理前端代码位于 UI/src/各页面职责一目了然初始化向导UI/src/views/Init.vue —— 首次运行时的系统初始化流程面容管理UI/src/views/Faces/Add.vue录入新面容、UI/src/views/Faces/List.vue面容列表首选项UI/src/views/Options.vue —— 摄像头选择、解锁方式、重试时间等日志与账户认证UI/src/views/Logs.vue、UI/src/components/AccountAuthForm.vue配套的状态管理Pinia stores在 UI/src/stores/faces.js 和 UI/src/stores/options.js路由定义在 UI/src/router/index.js。Rust 后端系统集成的真正干将真正的硬核逻辑在 UI/src-tauri/src/ 的 Rust 代码中modules/faces.rs基于 OpenCV 的人脸检测、比对、活体检测与面容一致性验证modules/init.rs系统初始化核心——部署/卸载核心组件、注册表写入、WinLogon 测试modules/options.rs首选项写入注册表供其他模块读取proc.rsWinlogon 进程操作窗口子类等底层技巧tray.rs系统托盘与静默自启utils/api.rs摄像头管理、计划任务、进程控制等系统 API 封装UI/src-tauri/src/lib.rs 中还能看到FaceDetectorYN、FaceRecognizerSF等 OpenCV 模型的持久化封装AppState以及单实例运行、托盘初始化等 Tauri 配置。凭据数据则通过 UI/src/utils/sqlite.js 调用 SQLite 本地存储绝不上传云端。 Server模块注入Windows登录界面的Credential Provider DLL这是整个项目最精妙的部分。Windows 登录界面的磁贴Windows Hello 图标所在位置由Credential Provider凭据提供程序机制驱动。Server 模块用 Rust 实现了一个完整的 COM DLL注册后就会出现在锁屏界面。Server/README.md 说明了它由四个核心部分组成文件职责Server/src/lib.rsCOM DLL 出口DllGetClassObject、DllCanUnloadNow、DllMain管理引用计数让 DLL 能被系统安全卸载Server/src/CSampleProvider.rs实现ICredentialProvider接口管理登录磁贴的生命周期并通过 LSA 获取认证包 IDServer/src/CSampleCredential.rs实现ICredentialProviderCredential接口把用户名/密码打包成系统可识别的序列化缓冲区Server/src/CPipeListener.rs后台命名管道监听线程等待 Unlock 服务送来凭据工作流程可以这样理解DLL 加载时从注册表SOFTWARE\facewinunlock-tauri读取配置日志路径、是否显示磁贴等当 Unlock 服务识别到人脸后通过命名管道把凭据推给CPipeListenerProvider 随后告知系统可以自动登录系统调用 Credential 的序列化接口完成登录。整个过程中DLL 还通过引用计数G_REF_COUNT保证 COM 对象被正确释放——这也是 lib.rs 中dll_add_ref/dll_release存在的原因。 Unlock模块静默运行的面容识别引擎Unlock/ 是后台面容识别核心服务详见 Unlock/README.md源码入口为 Unlock/src/main.rs。由于项目自 2026 年 3 月起闭源该目录中的核心 Rust 代码已移除但它的职责从架构上依然清晰监听锁屏/开机等场景事件拉起摄像头采集画面用 OpenCV 完成人脸检测、特征比对与活体检测识别成功后将对应账户的凭据写入命名管道交给 Server DLL失败时记录最后一帧画面、进入重试冷却它几乎不占多少资源。下面这张图是官方给出的后台进程占用参考 三大模块协作一次完整的面容解锁之旅把三条线串起来一次看一眼解锁的完整链路是事前UI 模块用户在主程序里录入面容、关联 Windows 账户设置写入 SQLite 与注册表锁屏瞬间Unlock 模块识别服务被唤醒摄像头捕捉人脸并完成比对 活体检测管道传递Server 模块凭据经命名管道送达 DLL 的CPipeListener系统登录Server 模块DLL 触发CredentialsChangedWindows 完成自动登录这就是为什么项目结构要拆成三大模块UI 拥有管理员权限做配置Unlock 是独立服务保证低延迟Server 则是唯一驻留在登录界面进程里的组件三者通过注册表与命名管道解耦互不干扰。 新手源码阅读路线建议如果你打算深入源码推荐按依赖顺序阅读README.md —— 了解功能全貌与安装流程Server/README.md 配合 Server/exports.def —— 先搞懂 COM DLL 的四个类UI/src-tauri/src/modules/init.rs —— 看核心组件如何部署到系统UI/src/views/ 各页面 —— 最后补上界面对应关系需要提醒的是本项目涉及注册表修改与 Winlogon 操作属于2D 面容识别安全性弱于 3D 结构光方案建议只在个人家用电脑或开发机上使用。理解了这个三模块解耦的架构设计你也就掌握了 FaceWinUnlock-Tauri 项目结构的全貌——这正是它能同时做到轻量、易读、可维护的关键所在。【免费下载链接】FaceWinUnlock-Tauri一款基于 Tauri 框架开发的现代化 Windows 面容识别解锁增强软件。它通过自定义 Credential Provider (DLL) 注入 Windows 登录界面结合前端 Vue 3 和后端 OpenCV 人脸识别算法为用户提供类似 Windows Hello 的解锁体验。项目地址: https://gitcode.com/gh_mirrors/fa/FaceWinUnlock-Tauri创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表