一、前言

关于Windows远程桌面,前面文章已提到过几次,主要包括mstsc.js和noNVC。这两种方案都是使用浏览器直接连接到远程电脑桌面的。可以在支持html5的任意浏览器上远程连接到桌面。

而且,这两种方案都有开放源码,因此,可以根据自己需求,定制自己的远程桌面方案。当然,需要先解决一些兼容性问题,尤其是mstsc(这个之前遇到问题,没解决)。

二、应用场景

前面提到过的远程方案,提及的主要是Web方面的,即直接使用浏览器使用远程桌面。但web有个很明显的不足,就是对输入事件的捕获和处理没有客户端来得及时和准确,甚至有时会捕获不到终端的输入事件。

但好在,web方式很方便。因此如果只是需要执行查看或简单的远程操作的话,使用web方式是很好的选择。

由于web方式的缺点,所以这两种方式都有桌面客户端的方式。或许应该是,现有的客户端方式,然后为了方便,才增加的web连接方式。

mstsc(系统自带的远程桌面连接)、nvcViewer就是对应的客户端程序。这两种方式其实都可以直接在远程连接后,只操作指定的应用,甚至看上去就像是在本地启动的程序一样。

三、mstsc客户端连接方式

远程桌面连接方式,其实就是使用Windows自带的mstsc.exe带上配置参数启动的。也可以直接使用rdp文件启动远程连接。

rdp文件,其实就是一个配置文件。内容如下:

full address:s:192.168.127.131
alternate full address:s:192.168.127.131
remoteapplicationmode:i:1
remoteapplicationname:s:Atom
remoteapplicationprogram:s:||Atom

各字段含义可以参考:Supported Remote Desktop RDP file settings | Microsoft Docs

将上面的配置保存为.rdp文件后,启动.rdp就可以在本地打开192.168.127.131机器上的Atom程序,看上去就像是在本机运行的Atom程序一样。当然有个前提是,127.131机器上已经做好了远程连接的设置。

remoteapplicationmode:i:1,这个字段很重要,必须设置为1,这样才能启动设置好的远程应用。

remoteapplicationprogram:s:||Atom,这个字段指定了连接后,要启动的远程应用。这个是在远程机器上设置好的。在登录连接到远程机器后,就启动该应用,并在连接端展示UI窗口。效果如下:

在本机启动了两个Atom程序,任务栏图标默认会加上两个绿色箭头状的图标,就像是mstsc连接上的图标一样。其实这就是一个远程桌面连接,只是把多余的信息(如窗口等)去掉而已,它在远程机器上启动了应用程序,只是窗口被隐藏了。

四、远程端配置

1. 使用本地组策略编辑器(gpedit.msc)进行设置:

本地计算机策略--计算机配置--模板管理--Windows组件--远程桌面服务--远程桌面会话主机--远程会话环境,如下图

这种方式只能打开一个桌面应用,不能由发起连接端指定。

2. 也是本地组策略方式,路径同1大致相同,如下图

这种方式可以由连接端指定要启动的应用程序,但是需要在rdp文件中添加如下配置,用于指定需要启动的程序路径

remoteapplicationmode:i:1
alternate shell:s:C:\Program Files\node\node.exe
remoteapplicationfile:s:C:\Program Files\node\node.exe

3. 使用系统注册表(regedit.exe)进行设置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications\Atom]
"Name"="Atom"
"Path"="C:\\Users\\aaa\\AppData\\Local\\atom\\atom.exe"
"VPath"="C:\\Users\\aaa\\AppData\\Local\\atom\\atom.exe"
"RequiredCommandLine"=""
"CommandLineSetting"=dword:00000001
"IconPath"="C:\\Users\\aaa\\AppData\\Local\\atom\\atom.exe"
"IconIndex"=dword:00000000
"ShowInTSWA"=dword:00000000

箭头所指的键值就是rdp文件设置的 "remoteapplicationprogram:s:||Atom"

这种方式有个好用的开源工具:https://github.com/donglinshengan/remoteapptool

五、结语

各种桌面远程方案有各自的优缺点,可以根据自己的需求进行选择和修改。

调用Windows远程桌面应用相关推荐

  1. Delphi 调用Windows 远程桌面核心代码

    通过COM接口调用远程桌面,将远程桌面显示在应用程序窗体内: 一.主程序: unit uMain;interfaceusesWinapi.Windows, Winapi.Messages, Syste ...

  2. Zabbix 结合 bat 脚本与计划任务开启 windows 远程桌面

    场景分析 某IT公司的员工小东,在公司部署了一台zabbix用来监控windows系统服务器的一些使用情况.他现在想做到一个功能,就是通过浏览器发现某台windows主机出现内存过高,或者cpu利用率 ...

  3. Windows远程桌面实现之六(新版本框架更新,以及网页HTML5音频采集通讯)

    by fanxiushu 2018-08-21 转载或引用请注明原始作者. 到目前为止,包括本文发布了六个系列,能坚持到现在也属不易. 第一篇: https://blog.csdn.net/fanxi ...

  4. windows 远程桌面无法连接的问题

    windows 远程桌面无法连接的问题 在日常网络应用中,我们经常会需要通过远程连接到某台电脑或者服务器来进行调试,配置相关参数,特别当虚拟机,虚拟服务器等来回切换鼠标很不方便的时候,我们就会想法通过 ...

  5. Windows远程桌面实现之十 - 把xdisp_virt项目移植到iOS,macOS,linux平台(一)

    by fanxiushu 2019-12-06 转载或引用请注明原始作者. xdisp_virt项目到目前为止,持续了两年多时间,几乎都是在windows平台下的实现各种功能, 因为持续时间比较长,能 ...

  6. Windows远程桌面实现之十三:浏览器客户端使用WebRTC传输,以及WebRTC和MSE渲染显示(二)

    by fanxiushu 2022-03-12 转载或引用请注明原作者. 接上文. 我们先来编译kvswebrtc开源代码. 首先得从github下载 ksvwebrtc源码, 分别需要  amazo ...

  7. windows远程桌面配置CUDA

    最近自己机器上的GPU坏了,实验室远程服务器上也安装了GPU,就准备配好用起来. 在安装好CUDA Toolkit后(https://developer.nvidia.com/cuda-downloa ...

  8. Windows远程桌面连接并传输文件

    Windows远程桌面连接 IT管理员说他把设备配置好了,你可以使用了: 给你了如下信息: 用户名:admin123 密码: xxxxxxxxx IP:10.10.10.10 第一步:在win10搜索 ...

  9. 远程桌面计算机让输入密码,解决Windows远程桌面连接每次都提示输入密码的问题...

    Windows 远程桌面连接几乎每天都用,所以使用的方便性非常重要.如果你经常用,也许会发现在某些系统中,每次连接都需要输入密码,即使已经保存了密码,并且密码是正确的也是如此. 这个问题是策略设置的缘 ...

  10. linux远程桌面复制文件,SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面...

    SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面 发布时间:2007-04-08 01:02:27来源:红联作者:fengmayi1 i,最简单命令 ...

最新文章

  1. Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出
  2. 英语语法最终珍藏版笔记-18what 从句的小结
  3. jquery中cookie用法实例详解(获取,存储,删除等)
  4. 吴恩达深度学习——2.3 logistic回归损失函数
  5. 年存10W+的年轻人都是怎么攒钱的
  6. python基础之字符串定义常见操作、列表定义进阶操作
  7. centos下docker无法正常启动检查与解决方法
  8. Mac如何在回收站中恢复丢失数据
  9. ExtJS 教程汇总
  10. 信息安全软考——第四章 网络安全体系与网络安全模型 知识点记录
  11. CentOS 8系统时间校准
  12. excel中统计COUNTIFS的值为0
  13. 为什么世界 500 强企业在逐步淘汰传统绩效考核
  14. python实现截取excel中的表格,生成图片
  15. C++最小/最大(min;max;minmax;min_element;max_element;minmax_element)
  16. Unity --- 导航网格 与 导航的使用
  17. 爱,不留——陈光标裸捐之后
  18. html表头纵向,实现纵向表头的table
  19. 搭建Android应用程序的服务器
  20. 计算机中的二进制实验报告,大学计算机实验报告(共5篇).doc

热门文章

  1. Unity3D 串口连接
  2. 三位物理学家与陶哲轩证明的惊天定理,原来早在教科书里?
  3. cad字体安装_CAD字体如何划分?资源去哪下载?上千种字体资源,免费分享赠送...
  4. audio接线图解_拒绝做小白 你应该知道的常见音频接口
  5. 三次根号 matlab,MATLAB求三次根号,怎么是错误的?
  6. java软件工程师简历格式模板,重要概念一网打尽!
  7. 安装历史版本nvidia显卡驱动
  8. 【软件网每日新闻播报│第9-20期】
  9. JAVA 异或校验byte数组
  10. YYLabel的若干个疑问持续更新