RemoteApp 实现分析

以下所说步骤都是基于 Windows 10 Education English 版本,不同 Windows 版本的操作可能会有一定差异!

一、原理分析

Remote APP 是 Windows 的 RDP 功能原生支持的。通过配置服务端注册表相关配置项以及客户端 RDP 配置文件则可以实现发布应用发布。

当客户端与服务端建立远程连接时,客户端的remoteapplicationprogram:s可以传递别名或者绝对路径。

别名

当客户端传递别名时,服务端会去Applications去匹配别名,匹配失败则拒绝建立连接;匹配成功会根据匹配的项的 Path项的路径去打开指定文件,打开成功则建立连接,打开失败则拒绝建立连接。

绝对路径

当客户端传递的是绝对路径时,服务端会首先检查Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowListfDisabledAllowList字段,该字段的值有以下两种:

Value Description
0 Specifies that the Allow list is checked and enforced. This is the default setting.
1 Specifies that the Allow list is not checked and enforced.

fDisabledAllowList值为1时,服务端会直接根据客户端传递的绝对路径尝试打开应用建立连接;

为 0 时,客户端进行远程连接时,服务端将客户端传递的绝对路径与 Applications目录下的项的Path匹配,如果匹配成功,则允许进行访问;如果不成功,则禁止访问。

客户端rdpfile --> remoteapplicationprogram remote server reg --> TSAppAllowList fDisabledAllowList 连通结果
别名A 有配置为别名A的启动路径 1 ok
别名A 有配置为别名A的启动路径 0 ok
别名A 无配置为别名A的启动路径 1 failed
别名A 无配置为别名A的启动路径 0 failed
指定程序绝对路径 所有配置项中 包含 客户端rdp file钟指定的启动路径 0 ok
指定程序绝对路径 所有配置项中 包含 客户端rdp file钟指定的启动路径 1 ok
指定程序绝对路径 所有配置项中 不包含 客户端rdp file钟指定的启动路径 1 ok
指定程序绝对路径 所有配置项中 不包含 客户端rdp file钟指定的启动路径 0 failed

客户端 RDP 配置文件中的 disableremoteappcapscheck在置为1时,会在建立连接之前检查服务端是否对当前应用进行禁用;当值为 0 时会在建立连接之后再进行检查(一般情况下为 1 时的用户体验要好很多)。

二、原理验证

服务端

1. 开启远程桌面

首先要在 Windows 设置中开启远程桌面服务:Settings -> System -> Remote Desktop -> Enable Remote Desktop

以下版本支持 WIndows 远程桌面:

Windows 版本 支持的版本 不支持的版本
Windows XP Professional Home
Windows 7 Ultimate、Enterprise、Education Professional、Home、Starter
Windows 8 Ultimate、Enterprise、Education Professional、Home、Starter
Windows 10 Ultimate、Enterprise、Education、Professional Home、Starter
Windows Server 2008、2012、2016、2019 2003

2. 添加远程访问权限

首先新建一个用户:Settings -> Accounts -> Family & other users -> Add someone else to this PC

然后为新建的用户添加远程桌面权限:Settings -> System -> Remote Desktop -> User accounts -> Select users that can remotely access this PC

3. 修改注册表

按下 Win + R 键,输入 regedit 进入注册表编辑,找到 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList,新建项(K)Applications

这个Applications就是我们允许远程访问 App 的白名单。

下面演示添加一个测试应用:

  1. Applications 下面新建一个项(K),取名为 Test

  2. 为该项添加一个 字符串值 ,名字为Path,其值为 C:\Windows\explorer.exe(Windows 资源管理器):

Windows 服务端更多配置项可查看官方文档:Search | Microsoft Docs

客户端

新建一个文本,写入以下配置文件:

allow desktop composition:i:1
allow font smoothing:i:1
alternate full address:s:DESKTOP        // 指定远程计算机的备用名称或IP地址
alternate shell:s:rdpinit.exe
devicestoredirect:s:*                   // 确定本地计算机上的哪些设备将被重定向并在远程会话中可用; * 代表重定向所有受支持的设备,包括稍后连接的设备
disableremoteappcapscheck:i:1           // 提前检查远程 APP在服务端是否允许访问
drivestoredirect:s:*
full address:s:10.0.*.*                 // 指定要连接到的远程计算机的名称或IP地址
prompt for credentials on client:i:1
promptcredentialonce:i:0
redirectcomports:i:1
redirectdrives:i:1
remoteapplicationmode:i:1               // 连接是否作为RemoteApp会话启动
remoteapplicationname:s:Test            // 客户端界面中指定RemoteApp的名称
remoteapplicationprogram:s:||Test       // RemoteApp的别名或绝对路径(加||代表使用别名)。别名指的是 Applications 下的项名
span monitors:i:1
use multimon:i:1

保存该文本为 TestApp.rdp,Windows 端可以直接双击打开,如果非 Windows 端需要安装 WIndows 远程桌面客户端。

双击打开,输入允许远程访问的用户名和密码,就可以使用服务端的远程应用了:

更多配置项可查看官方文档:Supported Remote Desktop RDP file settings | Microsoft Docs

RemoteApp 实现分析相关推荐

  1. RemoteApp Tool(远程控制软件)v6.0.00学习及使用

    相关资料:https://www.iplaysoft.com/remoteapp-tool.html src:https://github.com/kimmknight/remoteapptool 转 ...

  2. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  3. 2022-2028年中国自动驾驶系统行业现状调研分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国自动驾驶系统行业市场行业相关概述.中国自 ...

  4. 2022-2028年中国阻尼涂料市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国阻尼涂料行业市场行业相关概述.中国阻尼涂 ...

  5. 2021-2028年中国阻燃装饰行业市场需求与投资规划分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国阻燃装饰行业市场行业相关概述.中国阻燃装 ...

  6. 2022-2028年全球与中国漂白吸水棉市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国漂白吸水棉行业市场行业相关概述.全 ...

  7. 2022-2028年全球与中国青苔清洗剂市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国青苔清洗剂行业市场行业相关概述.全 ...

  8. 2022-2028年全球与中国氢碘化物市场智研瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国氢碘化物行业市场行业相关概述.全球 ...

  9. 2022-2028年全球与中国人字拖市场研究及前瞻分析报告

    [报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国人字拖行业市场行业相关概述.全球与 ...

最新文章

  1. [译]深入理解JVM
  2. webapi 异步返回
  3. 超棒的jQuery密码强度检验插件 - Complexify
  4. 限定通配符和非限定通配符_为什么我不信任通配符以及为什么我们仍然需要通配符...
  5. GlassFish 4带来了Java EE 7
  6. linux md5加密文件,Linux下对字符串进行MD5加密
  7. Eclipse 构建Maven项目
  8. mac运行linux命令,iOS:mac.app执行shell命令
  9. 王坚博士与计算机关系,与王坚副院长面对面:向王坚提问
  10. Javascript笔记:(实践篇)从jQuery插件技术说起-分析extend方法的源码(发现extend方法里有bug)(下篇)...
  11. 有家创业公司花重金要请我当CTO?!
  12. Dapper Sqlpara where in
  13. JAVASE复习计划
  14. 网站规划通识:原型图绘制的一些注意事项
  15. android开发之http协议
  16. stm32开发遇到的问题及后续
  17. Ae:摄像机设置与摄像机选项
  18. 什么是IP封锁, 如何解封?
  19. 【OpenCV】中的鱼眼相机及其标定
  20. 从RC低通滤波到卷积的理解

热门文章

  1. Windows安装Splunk
  2. 以太网交换机的自学习功能
  3. C++ 实现数学归纳法证明过程
  4. 图书管理系统-还书操作
  5. 应届毕业生如何准备自己的秋招简历?
  6. Java 中IO流详解(附实例代码/面试题)
  7. 有关金山毒霸“熊猫烧香免疫”功能的解释
  8. 手把手教你在windows虚拟机安装带网络的Linux系统
  9. Fortran pgplot安装
  10. Mybatis使用foreach批量插入Oracle提示命令未正确结束