Repository navigation
Releases
Releases · raydoomed/Ray-Desktop
Ray Desktop v1.4.2
Ray Desktop v1.4.1
Ray Desktop v1.4.1 发布说明
修复
- 辅助程序提权安全加固:请求启用子会话时,若辅助程序(EnableChildSessions.exe)的版本无法校验(例如文件损坏或被替换),此前会跳过校验直接提权启动。现已改为拒绝启动并提示,确保只运行与主程序版本一致的辅助程序。
稳定性与工程化
- 版本号升至 1.4.1.0。
兼容性
- 使用方式不变;
--dynamic/--lang启动参数保留。
Ray Desktop v1.4.0
Ray Desktop v1.4.0 发布说明
修复
- 手动重连后事件失效:关闭子会话窗口时会正确取消 RDP 事件订阅并复位状态标志。此前手动重连重建连接对象后,旧状态残留会跳过新对象的事件订阅,导致断线、分辨率等变化不再被跟踪。已修复,手动重连后连接状态与分辨率事件正常。
稳定性与工程化
- 自动重连决策独立化:断线重连的判断逻辑(触发条件、尝试计数、上限放弃、恢复/手动复位)重构为独立可测模块,新增 11 项单元测试覆盖全部状态迁移,测试断言从 31 增至 42。
- 版本号升至 1.4.0.0。
兼容性
- 使用方式不变;
--dynamic/--lang启动参数保留。
Ray Desktop v1.3.0
Ray Desktop v1.3.0 发布说明
修复
- 分辨率校正偶发失效:连选两次分辨率或选完立即切显示模式时,旧延迟校正可能被误停,导致窗口比例不匹配。已修复,校正稳定执行,窗口正确匹配所选比例。
- 断线后偶发停摆:状态读取失败时可能永久停在"已断开"且不自动重连。现在会立即进入自动重连探测,连接恢复后自动继续轮询。
- 副屏提示气泡位置:工具栏提示气泡首次显示时误判为主屏,多屏下可能被拉回主屏。已改为按按钮所在屏幕定位。
- 分辨率菜单打勾:奇数宽度分辨率下菜单勾选与实际应用值不一致,已对齐。
- setup 版本校验:启用辅助程序版本与应用不一致时阻止提权,避免错配。
稳定性与工程化
- 全项目裸异常补齐日志:所有静默 catch 补上日志,任何异常不再无迹可循。
- 日志有界:日志文件超 5MB 自动归档保留一份,避免长期挂机无限膨胀;高频路径的错误日志增加节流,不刷屏。
- 状态轮询失败即日志:状态读取失败会记录原因并进入重连,排障有据可依。
- 构建可靠性:AxImp 探测支持环境变量覆盖、注册表根与标准路径三层回退,不同安装位置的 SDK 都能定位,不再依赖固定路径。
- 图标压缩:程序图标从 4.7MB 压缩至 112KB,安装包体积显著减小。
兼容性
- 使用方式不变;
--dynamic/--lang启动参数保留。
v1.2.0
Ray Desktop v1.2.0 发布说明
修复
- 拖拽窗口 8 个方向缩放:修复"下边、左上、右上"三个方向的宽高比锁定向错位(曾导致窗口朝错误方向跳变)。现在拖动四边/四角缩放均正确锁定会话比例,无黑边、不变形。
- 固定模式拉伸窗口后切换动态:修复首次切换不跟随窗口尺寸的问题,切换后立即正确跟随。
- 自动重连失败后可手动重连:连续 6 次自动重连失败(约 12 秒连不上)后,"更多"菜单新增「重新连接」入口,无需注销子会话重开。
稳定性与工程化
- 核心几何/换算(像素→毫米、Letterbox 布局、WM_SIZING 窗口比例锁)与剪贴板信箱解析提取为无界面依赖的纯函数,新增 31 项单元回归测试(
tests/,无需 .NET SDK 即可运行),防止后续回归。 - 会话分辨率维护收敛为单一事实源(
aspect与会话分辨率不再双源背离)。
兼容性
- 使用方式不变;
--dynamic/--lang启动参数保留。
Ray Desktop v1.1.1
Ray Desktop v1.1.1
本版为稳定性修复版:根据一次完整代码审查(42 项)修复了 A 类缺陷并做了安全披露,功能操作与 v1.1.0 保持一致,无新增特性。
用户可感知的修复
- 关闭前确认:主动关闭程序且子会话仍在连接时,会先弹确认框,防止误关导致虚拟桌面内未保存的工作丢失(之前直接关闭)
- 断线自动重连:子会话断开或超时后约 2 秒自动重连,不再永久卡在"断开"状态;连续失败 6 次后自动停止并提示手动重连,不会无限重试
- 剪贴板不再重放旧内容:复制的文件/文本消费后即清理,重启程序不会把上次的旧剪贴板再放一遍
- 多显示器下断线重连不丢分辨率:窗口在副屏时若发生断线重连,会话分辨率保持当前所选,不会被拉回主屏
稳定性
- 动态分辨率更新失败后的重试真正生效(修复后不再静默失败)
- 修复两处 GDI 图形路径与下拉菜单的资源泄漏
- 窗口标题只在状态实际变化时更新,避免高频闪烁
日志与排障
- 日志位置从程序目录迁到
%LOCALAPPDATA%\RayDesktop\Logs,在 Program Files 等受保护目录安装时日志也能正常写入,排障不再失效
安全与隐私(告知)
- 子会话与主桌面共享全部本地磁盘(可读写),无路径白名单;剪贴板经自建桥在两会话间中继(功能上等效于剪贴板重定向开启)
- 剪贴板代理会写入开机自启项;如需停止自启或卸载清理,命令见 README「安全与隐私」
兼容性
- 无新功能,操作、外观与 v1.1.0 完全一致,仅做修复与安全披露
- 原有启动参数(
--dynamic、--clipboard-agent、--lang)行为不变
构建
在项目根目录运行 .\build.ps1,产物输出到 Raydesktop\:Raydesktop.exe、EnableChildSessions.exe、MSTSCLib.dll、AxInterop.MSTSCLib.dll。
Ray Desktop v1.1.0
Ray Desktop v1.1.0
本版为工程化重构,功能行为保持不变,面向开发可维护性与多语言支持。
新特性
UI 多语言(中/英)
- 界面支持中文 / 英文,自动跟随系统语言:中文系统 → 中文,其它系统 → 英文,开箱即用无需配置
- 也可用启动参数强制指定:
Raydesktop.exe --lang=zh(中文)或--lang=en(英文),两种写法--lang=xx与--lang xx均支持 - 工具栏按钮、下拉菜单、状态栏、对话框、气泡提示等全部文案已中文化/英文化
代码工程化(对用户无感,面向开发者)
- 将原本约 2000 行的单文件
Program.cs拆分为按类分文件,便于维护与协作 - 新增
Strings.cs集中管理全部界面文案与多语言字典 build.ps1构建脚本加固:AxImp.exe不再依赖本机固定路径,自动递归扫描 Windows SDK 目录;找不到时给出清晰报错(提示安装 Windows SDK)。支持从零构建——删除输出目录后一键重建全部产物
兼容性
- 功能、操作、外观与 v1.0.9 完全一致,本次为纯重构 + 多语言增强
- 原有启动参数(
--dynamic、--clipboard-agent)行为不变
构建
在项目根目录运行 .\build.ps1,产物输出到 Raydesktop\:Raydesktop.exe、EnableChildSessions.exe、MSTSCLib.dll、AxInterop.MSTSCLib.dll。
v1.0.9
Ray Desktop v1.0.9
新增
- 工具栏新增「收起 / 展开」按钮(位于拖动按钮左侧,图标为
<):点击一键把整条工具栏收成一个可拖动的小圆点,再点圆点即可展开恢复完整工具栏,完全手动控制,不会自动收起。 - 收起态小圆点平时半透明(35% 不透明度),几乎不遮挡游戏或办公界面;鼠标悬停到圆点上自动变清晰(不透明),方便定位,移开即恢复半透明。
- 收起态小圆点可随意拖到任意位置,位置记忆沿用工具栏自身的定位规则(跟随主窗口、越界自动钳回客户区)。
使用
- 运行 Raydesktop,连接成功后顶部出现悬浮工具栏(默认完整显示)。
- 点最右侧「拖动」按钮可移动工具栏;点它左侧的
<按钮把工具栏收成一个小圆点。 - 鼠标移开圆点,圆点变半透明不挡画面;悬停其上会变清晰,点一下展开工具栏。
Ray Desktop v1.0.8
Ray Desktop v1.0.8
动态分辨率 1:1 根源重构 + 全屏/最大化逻辑统一。
主要变更
- 动态分辨率 1:1(根源修复,多显示器/跨 DPI 全覆盖)
- 会话分辨率只由用户意图设置:手动选分辨率、跨屏「你的屏幕」、最大化、拖拽窗口结束。程序为铺满/缩放而自动调整窗口尺寸时,不再反向改写会话分辨率(删除了 rdp.Resize 自动跟随与跨屏锁定补丁)
- 以主窗体逻辑客户区为唯一事实源,不再按 DPI 换算——在任何 DPI(100%→200%)、单屏或多屏下,凡未主动拉伸过的窗口(含最大化→还原)会话分辨率都精确 1:1,分辨率菜单正确打勾
- 跨屏「你的屏幕」:窗口拖到哪块屏幕,会话就跟随该屏分辨率;若手动选了特定分辨率(如 1280×720),跨屏时保持手动值、不被强制改成第二屏分辨率
- 全屏与最大化逻辑统一(动态模式全跟)
- 动态模式下全屏也跟随整屏分辨率(进入全屏 = 整屏分辨率,退出全屏还原),与最大化行为一致;固定模式全屏保持固定分辨率不变
- 符合动态分辨率业界语义:会话分辨率 = 当前窗口逻辑客户区
- 代码清理:删除已失效的死代码(进入全屏的分辨率记忆字段、切动态时多余的尺寸预置、过时注释)
- 修复(发布后并入):切动态时「你的屏幕」不再偏移——固定模式窗口因工作区放不下会等比缩小显示(客户区小于屏幕原生),切动态时不再被误改成该缩放值;仅当窗口被用户主动拉伸后才跟随窗口尺寸
发布内容
- Raydesktop.exe 主程序
- EnableChildSessions.exe 启用 Child Sessions 辅助程序
- MSTSCLib.dll / AxInterop.MSTSCLib.dll RDP 互操作程序集
使用
- 系统需开启远程桌面(设置 → 系统 → 远程桌面)
- 解压后双击
Raydesktop.exe - 首次按 UAC 启用 Child Sessions,注销/重启一次后即可使用
- 连接就绪后,悬浮工具栏:显示切固定/动态,分辨率选会话分辨率,结束关闭程序,更多看关于/日志/更新
面向 Windows 11;首次运行需在系统设置开启远程桌面,并按 README 完成首次启用流程。
Ray Desktop v1.0.7
Ray Desktop v1.0.7
工具栏 DPI 感知 + 多显示器适配。
主要变更
- DPI 感知:切换系统缩放(如 140%)后,工具栏背景条与图标不再错位——按钮尺寸、圆角、间距按当前 DPI 缩放,图标等比放大,任意缩放比例下匹配背景条
- 启动时按当前 DPI 正确布局
- 运行中切换 DPI(PerMonitorV2 热切换/跨监视器)实时跟随,无需重启
- 多显示器适配:
- 分辨率菜单里的「你的屏幕」跟随窗口当前所在屏幕(不再固定主屏)
- 窗口拖到另一台显示器时自动适配该屏分辨率与窗口比例(等同自动选中「你的屏幕」,无需手动选择);固定/动态两种显示模式均跟随
发布内容
- Raydesktop.exe 主程序
- EnableChildSessions.exe 启用 Child Sessions 辅助程序
- MSTSCLib.dll / AxInterop.MSTSCLib.dll RDP 互操作程序集
使用
- 系统需开启远程桌面(设置 → 系统 → 远程桌面)
- 解压后双击
Raydesktop.exe - 首次按 UAC 启用 Child Sessions,注销/重启一次后即可使用
- 连接就绪后,悬浮工具栏:显示切固定/动态,分辨率选会话分辨率,结束关闭程序,更多看关于/日志/更新
面向 Windows 11;首次运行需在系统设置开启远程桌面,并按 README 完成首次启用流程。