调用Windows远程桌面应用
一、前言
关于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远程桌面应用相关推荐
- Delphi 调用Windows 远程桌面核心代码
通过COM接口调用远程桌面,将远程桌面显示在应用程序窗体内: 一.主程序: unit uMain;interfaceusesWinapi.Windows, Winapi.Messages, Syste ...
- Zabbix 结合 bat 脚本与计划任务开启 windows 远程桌面
场景分析 某IT公司的员工小东,在公司部署了一台zabbix用来监控windows系统服务器的一些使用情况.他现在想做到一个功能,就是通过浏览器发现某台windows主机出现内存过高,或者cpu利用率 ...
- Windows远程桌面实现之六(新版本框架更新,以及网页HTML5音频采集通讯)
by fanxiushu 2018-08-21 转载或引用请注明原始作者. 到目前为止,包括本文发布了六个系列,能坚持到现在也属不易. 第一篇: https://blog.csdn.net/fanxi ...
- windows 远程桌面无法连接的问题
windows 远程桌面无法连接的问题 在日常网络应用中,我们经常会需要通过远程连接到某台电脑或者服务器来进行调试,配置相关参数,特别当虚拟机,虚拟服务器等来回切换鼠标很不方便的时候,我们就会想法通过 ...
- Windows远程桌面实现之十 - 把xdisp_virt项目移植到iOS,macOS,linux平台(一)
by fanxiushu 2019-12-06 转载或引用请注明原始作者. xdisp_virt项目到目前为止,持续了两年多时间,几乎都是在windows平台下的实现各种功能, 因为持续时间比较长,能 ...
- Windows远程桌面实现之十三:浏览器客户端使用WebRTC传输,以及WebRTC和MSE渲染显示(二)
by fanxiushu 2022-03-12 转载或引用请注明原作者. 接上文. 我们先来编译kvswebrtc开源代码. 首先得从github下载 ksvwebrtc源码, 分别需要 amazo ...
- windows远程桌面配置CUDA
最近自己机器上的GPU坏了,实验室远程服务器上也安装了GPU,就准备配好用起来. 在安装好CUDA Toolkit后(https://developer.nvidia.com/cuda-downloa ...
- Windows远程桌面连接并传输文件
Windows远程桌面连接 IT管理员说他把设备配置好了,你可以使用了: 给你了如下信息: 用户名:admin123 密码: xxxxxxxxx IP:10.10.10.10 第一步:在win10搜索 ...
- 远程桌面计算机让输入密码,解决Windows远程桌面连接每次都提示输入密码的问题...
Windows 远程桌面连接几乎每天都用,所以使用的方便性非常重要.如果你经常用,也许会发现在某些系统中,每次连接都需要输入密码,即使已经保存了密码,并且密码是正确的也是如此. 这个问题是策略设置的缘 ...
- linux远程桌面复制文件,SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面...
SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面 发布时间:2007-04-08 01:02:27来源:红联作者:fengmayi1 i,最简单命令 ...
最新文章
- Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出
- 英语语法最终珍藏版笔记-18what 从句的小结
- jquery中cookie用法实例详解(获取,存储,删除等)
- 吴恩达深度学习——2.3 logistic回归损失函数
- 年存10W+的年轻人都是怎么攒钱的
- python基础之字符串定义常见操作、列表定义进阶操作
- centos下docker无法正常启动检查与解决方法
- Mac如何在回收站中恢复丢失数据
- ExtJS 教程汇总
- 信息安全软考——第四章 网络安全体系与网络安全模型 知识点记录
- CentOS 8系统时间校准
- excel中统计COUNTIFS的值为0
- 为什么世界 500 强企业在逐步淘汰传统绩效考核
- python实现截取excel中的表格,生成图片
- C++最小/最大(min;max;minmax;min_element;max_element;minmax_element)
- Unity --- 导航网格 与 导航的使用
- 爱,不留——陈光标裸捐之后
- html表头纵向,实现纵向表头的table
- 搭建Android应用程序的服务器
- 计算机中的二进制实验报告,大学计算机实验报告(共5篇).doc