mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-11-09 17:06:24 +08:00
[feat] unify Windows unattended hosting with shared device identity
Keep RTC connections in the persistent SYSTEM host and attach GUI session features through an authenticated local channel. Share device credentials, settings and trusted devices, and use the service for Windows boot startup. Unify normal and secure desktop capture fallback, recover virtual displays, and coordinate cursor ownership across desktop transitions. Update localization, documentation and the MiniRTC dependency. Validated with git diff --check and localization catalog JSON parsing. Builds and runtime tests were not run.
This commit is contained in:
+16
-9
@@ -150,14 +150,13 @@ sudo apt install "./crossdesk-virtual-desktop-xfce-linux-amd64-<version>.deb"
|
||||
| 设置 | 说明 |
|
||||
| --- | --- |
|
||||
| 语言 | 中文、English、Русский |
|
||||
| 采集方式(Windows) | 自动 / DXGI / WGC / GDI;无显示器主机使用“自动”启用自动适配 |
|
||||
| 视频编码格式 | H.264 / AV1;H.264 自动优先使用硬件编解码,不可用或初始化失败时回退到软件;桌面端 AV1 使用软件编解码 |
|
||||
| 启用 IP 直连 | 默认开启;保存后即时启停 IP 直连。关闭会断开 IP 会话、停止监听并隐藏主窗口模式按钮,重启后保持 |
|
||||
| 强制中继连接 | 关闭时自动选择连接方式,允许 P2P 和 TURN 中继回退;开启时仅通过中继连接 |
|
||||
| 保存远程画面预览 | 默认开启,保存远程画面预览;关闭后缩略图区域显示被控端平台,并清除已有预览,保留连接记录和密码 |
|
||||
| 被连接时开启隐私屏 | 设置本机被远程连接时是否自动启用隐私屏;会话中可从控制端工具栏切换 |
|
||||
| 自托管配置 | 点击“编辑”填写服务器地址和信令服务端口,使用右侧开关启用 |
|
||||
| 开机自启 | 保存后设置登录桌面时自动启动 |
|
||||
| 开机自启 | Windows 安装版 Release:使用现有 ID、密码在登录前提供远控;用户登录后自动启动普通客户端并接管同一身份,恢复完整功能。Windows 便携版和 Debug 不支持此开关。其他桌面平台保存后设置登录桌面时自动启动 |
|
||||
| 启用守护进程 | Windows / Linux 桌面模式保存后立即启用或停用异常退出后的自动重启,无需重启程序;正常退出或注销不会重新拉起。macOS 下次启动生效,无头控制台模式不启用内置守护 |
|
||||
| 文件保存路径 | 选择接收文件的目录 |
|
||||
|
||||
@@ -238,11 +237,15 @@ CrossDesk 已支持鸿蒙 PC、手机和平板,PC 与移动端分别构建 HAP
|
||||
|
||||
## Windows 锁屏与登录界面
|
||||
|
||||
Windows 的屏幕采集统一按 **DXGI → WGC → GDI** 自动回退,适用于实体屏、虚拟屏、无头启动、登录/安全桌面及管道兜底采集。设置页不再提供手动选择,旧的强制采集配置会在加载时清理。后端不可用时才继续尝试下一项;重连及解锁恢复重新按此顺序选择,运行中失效则沿序列继续回退。
|
||||
|
||||
**CrossDesk Service**(服务名 `CrossDeskService`)提供锁屏、登录、凭据输入及安全桌面的状态上报、`Ctrl+Alt+Del` 发送和键鼠输入转发。
|
||||
|
||||
安装版默认注册按需启动的服务,客户端启动时尝试启动它;未启用无人值守时,本机没有 CrossDesk 客户端进程后服务会自动退出。便携版可在提示窗口或“设置 → 锁屏控制服务”中安装服务,需要管理员权限。
|
||||
|
||||
Windows 的“开机自启”在当前用户登录后启动客户端。安装版使用以最高权限运行的登录计划任务,后续登录无需再次确认 UAC;便携版和 Debug 构建使用当前用户的普通启动项。升级安装版或手动启动新版时,会自动迁移指向该程序的旧启动项。关闭自启会删除相应注册。登录前远控需要另外启用下面的无人值守模式。
|
||||
Windows 安装版 Release 的“开机自启”使用无人值守服务:将 `CrossDeskService` 设为系统自动启动,并为启用此选项的用户注册登录后的 GUI 启动任务。后台持续独占本机身份和远控连接,GUI 通过经过身份验证的本机管道接入用户功能。关闭后移除开机与登录自动启动,将服务恢复为按需启动;手动打开 GUI 时仍由后台提供远控连接。“启用守护进程”只控制普通 GUI 的崩溃恢复。便携版和 Debug 不支持此开关。
|
||||
|
||||
首次开启时,先让普通客户端联网获得本机 ID。程序会保留当前 ID、密码、设备身份密钥和可信设备记录,并将它们同步到仅管理员和 SYSTEM 可访问的机器配置;原有用户配置保留。旧 Run 启动项会被登录启动任务替代,不再产生另一套无人值守 ID。已经使用旧版独立无人值守身份的安装,在新版中完成迁移后改用普通客户端现有身份。
|
||||
|
||||
<a id="windows-service-development-update"></a>
|
||||
|
||||
@@ -264,28 +267,32 @@ foreach ($serviceAction in '--service-stop', '--service-install', '--service-sta
|
||||
|
||||
服务重启期间远控可能短暂中断。完成后重新连接,分别测试普通桌面和锁屏输入。服务将使用该构建目录中的程序,请保留该目录;恢复使用安装版时,重新安装完整安装包以恢复对应的服务注册。
|
||||
|
||||
若已启用“开机自启”,切换构建目录后还需用新版客户端保存一次该设置,或在普通客户端退出后执行新版的 `--unattended-enable`,以更新登录后的 GUI 启动任务。单独修复服务不会更新这个任务的程序路径。
|
||||
|
||||
### 开机后尚未登录时远控
|
||||
|
||||
安装版支持独立的无人值守被控端。在完整安装目录中打开**管理员 PowerShell**,一次性启用:
|
||||
在“设置 → 开机自启”中开启并保存,主界面的本机 ID 和密码可以在登录前后通用,无需另记一套连接信息。也可以在完整安装目录中打开**管理员 PowerShell**启用同一功能;首次使用 CLI 启用前,先关闭普通客户端,或直接使用运行中客户端的设置开关:
|
||||
|
||||
```powershell
|
||||
.\CrossDesk.exe --unattended-enable
|
||||
# 等待联网注册后,查看独立设备 ID、密码和 online 状态
|
||||
# 查看共享的设备 ID、密码、online 状态及当前托管方 mode
|
||||
.\CrossDesk.exe --unattended-status
|
||||
```
|
||||
|
||||
使用返回的 `device_id` 和 `password` 从另一台设备连接。首次启用时复制当前客户端的服务器和编码设置,单独生成无人值守凭据;它与普通客户端的设备 ID 不同,重启、注销和重新启用时保留。后续执行启用命令会复用机器配置,不会覆盖它。自建服务器的根证书需要安装到本地计算机的信任存储中。
|
||||
使用原有 `device_id` 和 `password` 从另一台设备连接。密码变更(包括尚未确认的变更记录)、设备身份密钥和可信设备记录会在两种托管模式之间同步。后续重新启用会复用共享身份,不会生成新 ID。自建服务器的根证书需要安装到本地计算机的信任存储中。
|
||||
|
||||
启用后,`CrossDeskService` 改为系统启动时自动运行,无需 Windows 自动登录,也不需要保存 Windows 登录密码。服务以 SYSTEM 身份在当前控制台会话中启动无界面的被控进程,复用登录界面抓屏、键鼠及 `Ctrl+Alt+Del` 支持。用户登录、锁屏和关闭普通客户端不会停止它;注销、切换用户或进程崩溃后服务会重新拉起,期间连接可能中断,需要重新连接同一设备 ID。启动时网络尚未就绪会继续重试。
|
||||
启用后,`CrossDeskService` 随系统启动,无需 Windows 自动登录,也不需要保存 Windows 登录密码。服务以 SYSTEM 身份在控制台会话中启动无界面的被控进程,持续负责网络连接、抓屏、键鼠及 `Ctrl+Alt+Del`。GUI 等待用户桌面解锁后附加到后台,不再重新登录信令服务器,也不因 GUI 启动或退出而替换正在进行的远控连接。登录过程中保留同一条连接;退出或重启 GUI 时,后台仍可继续传送画面和处理键鼠。注销、切换 Windows 会话或重启服务仍需重建后台进程;网络中断也可能导致断线。启动时网络尚未就绪会继续重试。
|
||||
|
||||
无人值守模式提供画面、键鼠、多屏切换和安全桌面控制;不提供声音、文件传输、剪贴板或隐私遮罩。便携版和 Debug 构建不能启用此模式。设置和凭据位于 `%ProgramData%\CrossDeskUnattended`,只允许 SYSTEM 和管理员访问;日志位于其 `logs` 子目录。
|
||||
登录前提供画面、键鼠、多屏切换和安全桌面控制。登录界面支持由原生控制端独立绘制光标;采集期间暂时隐藏本机系统光标,停止采集、采集进程退出或连接保活超时后自动恢复。网页控制端仍使用视频内光标。启用自动隐私模式时,后台会在恢复虚拟屏桌面采集前接续光标控制,GUI 随后复用该状态,避免初始化期间短暂出现视频内鼠标;手动关闭隐私遮罩仍会恢复本机光标。GUI 附加后,声音、文件传输、剪贴板和隐私遮罩由登录用户进程处理,通过本机通道复用后台的连接;文件操作不会以 SYSTEM 身份执行。GUI 的主动远控和局域网直连仍使用原有实现。密码、共享设置和可信设备记录由后台统一保存并同步给 GUI。GUI 退出时用户功能暂时不可用,重新打开后恢复。便携版和 Debug 不能启用此模式。共享身份位于 `%ProgramData%\CrossDeskUnattended`,只允许 SYSTEM 和管理员访问;GUI 与 SYSTEM 各自的运行缓存仍保持用户私有权限,日志位于机器目录的 `logs` 子目录。
|
||||
|
||||
无实体显示器或切换器未提供显示器信息时,无人值守端会在接受连接前尝试准备虚拟显示器,优先恢复此前记录的显示器分辨率(包括 3840×2160);没有有效记录时才使用 1920×1080。记录在启用开机自启和初始化抓屏时更新,CrossDesk 自己的虚拟屏与临时无显示器模式不会覆盖它。若驱动初始化失败,程序会记录原因并继续使用 Windows 提供的显示模式。
|
||||
|
||||
```powershell
|
||||
# 停止无人值守被控端,并恢复服务按需启动
|
||||
.\CrossDesk.exe --unattended-disable
|
||||
```
|
||||
|
||||
关闭普通“开机自启”不会关闭无人值守模式。禁用或卸载服务会取消无人值守启动,但保留受保护的机器配置;若需彻底清除凭据,在服务停止后由管理员删除该目录。
|
||||
关闭设置中的“开机自启”等同于禁用无人值守模式;CLI 的启停结果也会反映在该开关中。禁用或卸载服务会取消无人值守启动,但保留受保护的机器配置;若需彻底清除凭据,在服务停止后由管理员删除该目录。
|
||||
|
||||
<details>
|
||||
<summary>手动部署与服务管理命令</summary>
|
||||
|
||||
Reference in New Issue
Block a user