RemoteApp 实现分析

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字段,该字段的值有以下两种:

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

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

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

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

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

二、原理验证

服务端

1. 开启远程桌面

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

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

Windows 版本支持的版本不支持的版本
Windows XPProfessionalHome
Windows 7Ultimate、Enterprise、EducationProfessional、Home、Starter
Windows 8Ultimate、Enterprise、EducationProfessional、Home、Starter
Windows 10Ultimate、Enterprise、Education、ProfessionalHome、Starter
Windows Server2008、2012、2016、20192003
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

image-20220107145404436

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

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

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

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

    image-20220107145416291

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 远程桌面客户端。

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

image-20220107145430149

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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Windows 2016 的 RemoteApp 主要实现了远程桌面应用程序的功能。这意味着,用户可以通过 Internet 连接到远程计算机,然后在本地计算机上使用远程计算机上的应用程序,就像使用本地计算机上的应用程序一样。这样,用户就可以在本地计算机上使用远程计算机上的资源,而无需将这些资源拷贝到本地计算机上。 除了远程桌面应用程序功能之外,Windows 2016 的 RemoteApp实现了以下功能: - 多用户支持:多个用户可以同时连接到同一台远程计算机,并使用这台计算机上的应用程序。 - 跨平台支持:用户可以使用 Windows、Mac 或 Linux 计算机连接到远程计算机,并使用这台计算机上的应用程序。 - 安全性:连接到远程计算机时使用加密通信,以确保数据的安全性。 - 可配置性:管理员可以使用 Group Policy 来配置远程桌面应用程序的行为。 - 可扩展性:可以将 RemoteApp 集成到其他应用程序和服务中,以便为用户提供更多的功能。 ### 回答2: Windows 2016 的 RemoteApp 是一种虚拟化技术,旨在实现Windows 操作系统中的应用程序远程发布给用户,并在用户端实现本地化的应用程序体验。RemoteApp 的主要功能包括以下几个方面: 1. 远程访问:RemoteApp 可以让用户通过网络远程访问运行在 Windows 2016 服务器上的应用程序,无论用户身处何地,只需要有网络连接即可。 2. 应用程序虚拟化:RemoteApp 对应用程序进行虚拟化处理,使得应用程序在远程执行时能够与用户端的桌面环境进行无缝集成,让用户感觉仿佛在本地运行应用程序一样。 3. 安全访问控制:RemoteApp 提供了强大的安全功能,可以通过访问控制列表 (ACL) 来限制用户对特定应用程序的访问权限,保护应用程序和用户数据的安全。 4. 柔性部署:RemoteApp 支持灵活的部署方式,可以将应用程序直接安装在 Windows 2016 服务器上,也可以通过虚拟机进行部署,同时还支持将应用程序与用户数据分离存储,提高效率和可靠性。 5. 管理和监控:RemoteApp 提供了友好的管理界面,管理员可以通过该界面轻松管理和监控服务器上的应用程序,包括应用程序的发布、更新、删除等操作,同时还可以实时监控应用程序的状态和性能。 6. 资源共享:RemoteApp 可以实现多用户共享同一个应用程序的功能,多个用户可以同时访问同一个应用程序,并且各自的操作都是独立的,不会相互影响。 7. 跨平台支持:RemoteApp 支持跨平台访问,可以在不同的操作系统上访问服务器上的应用程序,包括 Windows、Mac、iOS 和 Android 等。 总的来说,Windows 2016 的 RemoteApp 主要实现了远程应用程序访问、虚拟化、安全控制、灵活部署、管理监控、资源共享和跨平台支持等功能,提供了便捷、安全和高效的应用程序发布和访问方式。 ### 回答3: Windows 2016 的 RemoteApp 是一种应用程序虚拟化技术,可以将 Windows 应用程序透明地发布给远程用户。它的主要功能包括: 1. 应用程序远程发布:RemoteApp 可以在 Windows 服务器上托管应用程序,并通过远程桌面服务(RDS)将应用程序发布给远程用户。远程用户可以通过任何连接到互联网的设备访问这些应用程序,无需在本地安装。 2. 访问任何地方:RemoteApp 允许用户通过网络访问其工作环境中的应用程序,无论他们身在何处。用户只需在远程桌面客户端中输入正确的服务器地址,即可使用所需应用程序,提高了办公效率。 3. 简化部署和管理:通过使用 RemoteApp,管理员可以更加简化应用程序的部署和管理。他们可以在服务器端集中管理和维护应用程序,而无需在每个用户设备上进行安装和配置。这降低了管理工作和维护成本。 4. 提供安全访问:RemoteApp 通过使用远程桌面协议(RDP)进行通信,加强了安全性。远程用户的数据和应用程序在网络中进行加密传输,确保信息的机密性和完整性。同时,管理员可以通过 RDS 策略设置权限,控制用户对应用程序的访问和使用。 5. 支持混合式部署:RemoteApp 可以与本地资源进行无缝集成。远程用户可以通过 RemoteApp 使用本地打印机、文件共享和其他本地外围设备,提供了类似于本地应用程序的体验。 总而言之,Windows 2016 的 RemoteApp 主要实现了将应用程序从服务器端发布给远程用户,并提供了便捷的访问和管理方式,同时保证了安全性和兼容性。这为用户提供了更加自由和灵活的工作环境,提高了生产力和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值