CN113176957B - 一种基于rpc的远程应用自动化系统 - Google Patents
一种基于rpc的远程应用自动化系统 Download PDFInfo
- Publication number
- CN113176957B CN113176957B CN202110473306.9A CN202110473306A CN113176957B CN 113176957 B CN113176957 B CN 113176957B CN 202110473306 A CN202110473306 A CN 202110473306A CN 113176957 B CN113176957 B CN 113176957B
- Authority
- CN
- China
- Prior art keywords
- client
- server
- virtual channel
- rpc
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 4
- 238000005538 encapsulation Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 33
- 239000012634 fragment Substances 0.000 description 5
- 239000000872 buffer Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004801 process automation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于RPC的远程应用自动化系统,包括:运行于本地进程内的本地客户端组件和运行于远程服务器上的Runtime组件;其中所述本地客户端组件内部设置有Receiver Client驱动组件用于连接远程服务器Remote Server,同时Receiver Client驱动组件根据其支持的协议将信息通过虚拟通道传递给服务器;其中Receiver Client驱动组件内部设置有Extension DLL插件,且其与上层的RPA应用通过命名管道进行通信,消息由插件转发到虚拟通道。该基于RPC的远程应用自动化系统,通过RPC实现了对Citrix和RDP虚拟通道的封装,在不同的连接情况下分别基于对应的协议进行RPC调用,并且在传输协议之上定义了应用层协议,在保证安全协议的前提下保证了可扩展性,达到本地应用能够对远程对象进行调用,解决了远程自动化的问题。
Description
技术领域
本发明涉及流程自动化技术领域,具体为一种基于RPC的远程应用自动化系统。
背景技术
RPA(Robotic Process Automation),即机器人流程自动化。它是替代人工的一种工作方式,用于解放人力于重复冗杂和有规则的工作流中。实现机器人流程自动化指的是非侵入式的自动化,即采用不同的识别技术来定位目标元素,而非注入代码的形式。
现在企业大量的虚拟资源应用,以及大量解决方案以虚拟化的方式交付催生了远程应用程序自动化技术的需求。虚拟化桌面的连接方式可以使用多种协议,这取决于对应的虚拟化技术。主流的传输协议为Citrix使用的ICA协议和Microsoft的RDP协议。ICA协议连接了运行在平台上的应用客户端运行环境和远端终端设备,采用了数据压缩、加密和连接优化技术,通过ICA的32个虚拟通道(分别传递各种输入输出数据如鼠标、键盘、图像、声音、端口、打印等等),将运行在中心服务器上的应用运行环境的IO数据重新定向到远端终端设备的IO设备上。而RDP协议通过TCP/IP进行数据传输,在实际数据前进行了ISO/MCS/SEC三层的包装,ISO/MCS两层为多点并发式通信提供了可靠的传输保障,SEC层提供对RDP详细数据的加解密处理。各层在数据的前端加有一段数据头,用于对数据、传输的控制,将终端虚拟环境中的设备映射为不同的数据包,将对设备的IO重定向到网络句柄中,不同设备的数据按不同格式组织成为小的数据包,并将多个小数据包封装成一个大的数据包通过网络一次性发出,对方将网络接收数据进行分解成为小包并按设备数据的类型进行不同的处理。
当前很多RPA产品采用图像识别或者发送快捷键的方式处理远程的自动化,通过图像匹配找到远程应用对应的元素,这种方法稳定性不好,受屏幕分辨率和屏幕缩放比影响较大。
发明内容
本发明的目的在于提供一种基于RPC的远程应用自动化系统,以解决上述背景技术提出的目前很多RPA产品采用图像识别或者发送快捷键的方式处理远程的自动化,通过图像匹配找到远程应用对应的元素,这种方法稳定性不好,受屏幕分辨率和屏幕缩放比影响较大的问题。
为实现上述目的,本发明提供如下技术方案:一种基于RPC的远程应用自动化系统,包括:运行于本地进程内的本地客户端组件和运行于远程服务器上的Runtime组件;
其中所述本地客户端组件内部设置有Receiver Client驱动组件用于连接远程服务器Remote Server,同时Receiver Client驱动组件根据其支持的协议将信息通过虚拟通道传递给服务器;
其中Receiver Client驱动组件内部设置有Extension DLL插件,且其与上层的RPA应用通过命名管道进行通信,消息由插件转发到虚拟通道;
其中远程服务器上的Runtime组件运行Remote Runtime进程,且其接收由客户端发送过来的消息,并转发到服务器驱动,对远程应用进行调用,消息经处理后按链路返回给客户端。
优选的,所述虚拟通道包括由与服务器端应用程序进行通信的客户端虚拟驱动程序组成的Citrix虚拟通道程序和RDP的Virtual Channel Client虚拟通道程序。
优选的,所述虚拟通道的传输层上层设置有应用层,所述应用层包含应用层协议,其中应用层协议具体分为协议头和协议体,并在包头分配了4个字节用于标志协议头的长度,协议头采用key=value的形式存放各字段。
优选的,所述Citrix虚拟通道程序的实现包括以下步骤:
步骤一:本地客户端组件内部的Receiver Client驱动组件通过连接XenApp/XenDesktop服务器,将其支持的虚拟通道的信息传递给服务器;
步骤二:服务器端应用程序启动,获取虚拟通道的句柄,并查询通道的相关信息,当服务器应用程序有要发送到客户端的数据,则数据将立即发送到客户端;
步骤三:当客户端接收到数据时,WinStation驱动程序将对ICA流中的虚拟通道数据进行多路分解,然后将其立即传递给客户端虚拟驱动程序。
优选的,所述客户端虚拟驱动程序如果具有要发送到服务器的数据,则在WinStation驱动程序下次对其进行轮询时将发送数据。
优选的,所述服务器接收到数据后,会将其排队,直到虚拟通道应用程序读取它为止,且服务器虚拟通道应用程序完成后,其关闭虚拟通道并释放所有分配资源。
优选的,所述Virtual Channel Client虚拟通道程序的客户端组件是一个动态连接库(Dll),且dll在客户计算机的终端服务初始化时被加载在mstsc.exe中,同时必须被注册到客户计算机中,在注册表中注册客户端dll的名称。
优选的,所述dll注册路径是下面路径之一加入子键:
HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client/Default/Addins;
或HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client/connection/Addins;
其中所述dll加入到Default/Addins键下会应用于所有的连接;且dll加入到connection/Addins键下仅仅应用于指定的连接,同时连接可以使用连接管理器创建和管理。
优选的,所述子键可以是任意的名称,且其必须包含一个REG_SZ或者REG_EXPAND_SZ型的值;
其中所述REG_SZ或者REG_EXPAND_SZ值的原型为Name=DLLname,且如果使用一个REG_EXPAND_SZ值,那么它包括一个未扩展的环境变量,这个变量将在运行时扩展。DLLname的值是一个全路径,并且如果DLLname没有包括一个全路径,那么将应用标准的Dll搜索路径。
优选的,所述dll导出了一个VirtualChannelEntry函数,且这个函数在终端服务初始化时被调用,则这个VirtualChannelEntry入口指向一个CHANNEL_ENTRY_POINTS结构的指针。
与现有技术相比,本发明的有益效果是:该基于RPC的远程应用自动化系统,通过RPC实现了对Citrix和RDP虚拟通道的封装,在不同的连接情况下分别基于对应的协议进行RPC调用,并且在传输协议之上定义了应用层协议,在保证安全协议的前提下保证了可扩展性,达到本地应用能够对远程对象进行调用,解决了远程自动化的问题;
1.本发明定义了应用层协议,这样对于传输层就不需要关注具体业务,通过解析协议头来标志消息ID以及添加状态码,独立于传输层的应用层协议,将传输层与应用层解耦,保证了本地应用和远程运行时的扩展性,安全性和兼容性;
2.本发明客户端虚拟驱动组件与上层RPA应用通过命名管道进行通信,驱动组件作为管道服务端,支持多个客户端进行连接,同时采用了重叠IO的方式进行读写,提高了通信的效率;
3.本发明服务端进程在有用户进行远程会话连接时自启动,通过判断当前会话类型而加载相应的组件,针对其他远程协议只需要根据提供的SDK完成组件的开发,上层应用不需要传输层的协议,保证了组件的可扩展性;
4.本发明当远程会话断开时,虚拟通道也同时断开不可用,此时用于读写的通道句柄已经失效,当重新建立会话连接时,驱动会重新初始化虚拟通道,此时程序会检查到当前通道发生改变并对读写句柄重新赋值,用户不需要手动重启进程进行连接;
5.本发明能够在多AutomationDriver版本支持,当前本地的RPA应用和远程的AutomationDriver版本需要保持一致,在安装RunTime时支持安装多个AutomationDriver版本,本地RPA应用在进行远程调用时,通过当前RPA的版本号调用不同的AutomationDriver版本;
6.Citrix和RDP虚拟通道对于单次传输数据大小都有限制,在传输大数据包时,通道会将数据包切分成指定大小片段多次发送,接收方需要判断当前接收的数据为开始、中间或是末尾进行合包,因此通道支持发送任意大小的数据;
7.即便是指定RDP连接方式为tcp连接,在网络延迟或是通道阻塞的情况下仍然会出现有数据包丢失的情况。针对这种情况客户端会判断发送的消息是有返回,当超过等待时间服务端仍没有数据返回时,客户端会重发该条丢失的数据包。
附图说明
图1为本发明架构示意图;
图2为本发明应用层协议示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,本发明提供一种技术方案:一种基于RPC的远程应用自动化系统,包括:运行于本地进程内的本地客户端组件和运行于远程服务器上的Runtime组件;
其中所述本地客户端组件内部设置有Receiver Client驱动组件用于连接远程服务器Remote Server,同时Receiver Client驱动组件根据其支持的协议将信息通过虚拟通道传递给服务器;
其中Receiver Client驱动组件内部设置有Extension DLL插件,且其与上层的RPA应用通过命名管道进行通信,消息由插件转发到虚拟通道;
其中远程服务器上的Runtime组件运行Remote Runtime进程,且其接收由客户端发送过来的消息,并转发到服务器驱动,对远程应用进行调用,消息经处理后按链路返回给客户端。
进一步的,所述虚拟通道包括由与服务器端应用程序进行通信的客户端虚拟驱动程序组成的Citrix虚拟通道程序和RDP的Virtual Channel Client虚拟通道程序。
进一步的,所述虚拟通道的传输层上层设置有应用层,所述应用层包含应用层协议,其中应用层协议具体分为协议头和协议体,并在包头分配了4个字节用于标志协议头的长度,协议头采用key=value的形式存放各字段,协议体包含了应用层具体业务信息,这样对于传输层就不需要关注具体业务,通过解析协议头来标志消息ID以及添加状态码。
进一步的,本地客户端组件内部的Receiver Client驱动组件通过连接XenApp/XenDesktop服务器,将其支持的虚拟通道的信息传递给服务器;服务器端应用程序启动,获取虚拟通道的句柄,并查询通道的相关信息,当服务器应用程序有要发送到客户端的数据,则数据将立即发送到客户端;当客户端接收到数据时,WinStation驱动程序将对ICA流中的虚拟通道数据进行多路分解,然后将其立即传递给客户端虚拟驱动程序。
进一步的,所述客户端虚拟驱动程序如果具有要发送到服务器的数据,则在WinStation驱动程序下次对其进行轮询时将发送数据,所述服务器接收到数据后,会将其排队,直到虚拟通道应用程序读取它为止,且服务器虚拟通道应用程序完成后,其关闭虚拟通道并释放所有分配资源。
进一步的,客户端需要配置虚拟驱动,将适用于平台的虚拟驱动程序复制到客户端安装目录,并将DllName添加到windows系统注册表HKEY_LOCAL_MACHINE的下列子目录的键值中:
SOFTWARE\Citrix\ICAClient\Engine\Configuration\Advanced\Modules\ICA3.0\VirtualDriverEx或
SOFTWARE\WOW6432Node\Citrix\ICAClient\Engine\Configuration\Advanced\Modules\ICA3.0\VirtualDriverEx(适用于64位)
客户端插件需要导出Load函数,该函数是虚拟驱动调用插件的入口,在插件中,需要实现以下几个函数:
1.DriverOpen该函数初始化虚拟驱动程序,负责分配虚拟通道,填写WDQUERYINFORMATION结构,然后调用VdCallWd。WinStation驱动程序以pVd形式填充OpenVirtualChannel结构,在Channel成员中分配通道号,pVCName成员中分配通道名称,虚拟通道名称的长度不得超过七个字符。虚拟驱动还需要向WinStation驱动注册一个钩子VDWRITEHOOKEX,这个钩子定义了客户端接收虚拟通道返回数据的函数入口点。虚拟驱动可以通过在DriverOpen期间获得的SendData或QueueVirtualWrite函数从缓冲区发送数据。如果WinSation驱动程序本身无法接收缓冲数据,通道将需要在下一个DriverPoll上重试发送操作。该函数开辟了一个线程,用于创建命名管道,接收上层的RPA应用发送的消息并转发写入虚拟通道中。
2.DriverClose当ICA连接终止时,WinStation驱动程序会在卸载虚拟驱动程序之前调用此函数,需要对虚拟驱动程序分配的内存做释放。
3.DriverPoll允许虚拟驱动程序检查计时器和其他状态信息,将排队的数据发送到服务器,同时执行任何其他所需的处理。主客户端轮询循环可能会定期调用此函数。
4.ICADataArrival当在驱动程序监视的虚拟通道上接收到数据时,WinStation驱动程序将调用此函数。此函数的地址在DriverOpen期间传递到WinStation驱动程序。Citrix规定通道传输的数据大小不超过5000字节(4996字节数据加上ICA数据流管理器生成的4字节数据包开销),当数据超过该字节时,需要对数据进行合并。
服务端通过配置计划任务,在有用户进行远程连接的时候调起服务端进程。进程启动后,首先调用WFVirtualChannelOpen查询当前服务器和会话的虚拟通道信息,成功后会返回一个句柄,服务器使用此句柄可以在程序中调用下列的方法:
1.WFVirtualChannelRead从虚拟通道读取数据
2.WFVirtualChannelWrite向虚拟通道写入数据
3.WFVirtualChannelClose关闭虚拟通道
和客户端接受数据一样,服务端在读取数据时仍需要考虑数据包的大小进行合包的操作。
进一步的,所述Virtual Channel Client虚拟通道程序的客户端组件是一个动态连接库(Dll),且dll在客户计算机的终端服务初始化时被加载在mstsc.exe中,同时必须被注册到客户计算机中,在注册表中注册客户端dll的名称,所述dll注册路径是下面路径之一加入子键:
HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client/Default/Addins;
或HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client/connection/Addins;
其中所述dll加入到Default/Addins键下会应用于所有的连接;且dll加入到connection/Addins键下仅仅应用于指定的连接,同时连接可以使用连接管理器创建和管理。
进一步的,所述子键可以是任意的名称,且其必须包含一个REG_SZ或者REG_EXPAND_SZ型的值;其中所述REG_SZ或者REG_EXPAND_SZ值的原型为Name=DLLname,且如果使用一个REG_EXPAND_SZ值,那么它包括一个未扩展的环境变量,这个变量将在运行时扩展。DLLname的值是一个全路径,并且如果DLLname没有包括一个全路径,那么将应用标准的Dll搜索路径。
进一步的,所述dll导出了一个VirtualChannelEntry函数,且这个函数在终端服务初始化时被调用,则这个VirtualChannelEntry入口指向一个CHANNEL_ENTRY_POINTS结构的指针,
这个指针将被下面几个函数使用到:
1.VirtualChannelInit注册使用的虚拟通道的名称,并提供一个VirtualChannelInitEvent回调函数,通过这个回调,终端服务提示客户端一些事件和客户连接
2.VirtualChannelOpen打开一个指定虚拟通道末端的客户,并提供VirtualChannelOpenEvent回调函数,通过这个回调终端服务提示客户端一些事件和客户连接
3.VirtualChannelWrite在虚拟通道中写数据。终端服务把这些数据发送到虚拟通道的服务器端。服务器调用WTSVirtualChannelRead函数来读取这些数据
VirtualChannelEntry函数必须调用VirtualChannelInit函数来初始化一个虚拟通道的访问。当调用VirtualChannelInit时,必须指定VirtualChannelInitEvent回调函数的一个指针。终端服务在初始化完成时调用这个函数,并在与一个终端服务器建立连接后再次调用这个函数。
在连接建立之后调用VirtualChannelOpen函数来打开由VirtualChannelInit函数注册的虚拟通道。VirtualChannelOpen函数将为VirtualChannelOpenEvent回调函数指定一个指针。当VirtualChannelOpen函数调用返回后,通过调用VirtualChannelWrite函数来写虚拟通道。写的过程是异步的,因此不必释放或重新分配缓冲区,直到VirtualChannelOpenEvent函数说明这个写的过程已经完成。
在调用VirtualChannelWrite函数时,可以通过一些用户数据来参看写过程的状态,当调用VirtualChannelOpenEvent时,终端服务将调用通过返回的用户数据和CHANNEL_EVENT_WRITE_COMPLETE事件通知写的过程已经完成。
服务器端程序通过调用WTSVirtualChannelOpen来得到一个虚拟通道的句柄,在程序中可以通过这个句柄使用下面的一些方法。
1.WTS Virtual Channel Close关闭虚拟通道
2.WTS Virtual Channel Read从一个虚拟通道的末端服务器中读数据
3.WTS Virtual Channel Write从一个虚拟通道的末端服务器中写数据
客户端和服务器端组件可以在虚拟通道中写入任意大小的数据。然而,对于传输数据包的大小是有限制的。
在发送数据之前,终端服务将把这些数据分割成CHANNEL_CHUNK_LENGTH字节大小的片断。当客户端初始化指定了CHANNEL_OPTION_SHOW_PROTOCOL时,RDP会在发送的数据包前加上包头CHANNEL_PDU_HEADER,这个结构体中的flags指定了当前包是发送数据的开始、中间或是末尾,因此当数据大小超过限定字节大小时,服务端需要多次通过调用WTSVirtualChannelRead函数进行接收,必须依据flags对于包的位置进行判断,将接受的数据进行拼接。同样的,终端服务为每一个数据片断调用VirtualChannelOpenEvent函数,而不是把这些数据重新建立成原始大小的包。每一次调用VirtualChannelOpenEvent显示数据片段的大小,并显示出是发送数据的开始、中间或是末尾,当传输数据大小超过CHANNEL_CHUNK_LENGTH字节大小时,客户端会多次调用VirtualChannelOpenEvent函数直到原始包的数据片段分发完成,通过RPC实现了对Citrix和RDP虚拟通道的封装,达到本地应用能够对远程对象进行调用,解决了远程自动化的问题。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于RPC的远程应用自动化系统,其特征在于,包括:运行于本地进程内的本地客户端组件和运行于远程服务器上的Runtime组件;其中所述本地客户端组件内部设置有Receiver Client驱动组件用于连接远程服务器Remote Server,同时Receiver Client驱动组件根据其支持的协议将信息通过虚拟通道传递给服务器;其中Receiver Client驱动组件内部设置有Extension DLL插件,且其与上层的RPA应用通过命名管道进行通信,消息由插件转发到虚拟通道;其中远程服务器上的Runtime组件运行Remote Runtime进程,且其接收由客户端发送过来的消息,并转发到服务器驱动,对远程应用进行调用,消息经处理后按链路返回给客户端;
所述虚拟通道包括由与服务器端应用程序进行通信的客户端虚拟驱动程序组成的Citrix虚拟通道程序和RDP的Virtual Channel Client虚拟通道程序。
2.根据权利要求1所述的一种基于RPC的远程应用自动化系统,其特征在于:所述虚拟通道的传输层上层设置有应用层,所述应用层包含应用层协议,其中应用层协议具体分为协议头和协议体,并在包头分配了4个字节用于标志协议头的长度,协议头采用key=value的形式存放各字段。
3.根据权利要求1所述的一种基于RPC的远程应用自动化系统,其特征在于:所述Citrix虚拟通道程序的实现包括以下步骤:步骤一:本地客户端组件内部的ReceiverClient驱动组件通过连接XenApp/XenDesktop服务器,将其支持的虚拟通道的信息传递给服务器;步骤二:服务器端应用程序启动,获取虚拟通道的句柄,并查询通道的相关信息,当服务器应用程序有要发送到客户端的数据,则数据将立即发送到客户端;步骤三:当客户端接收到数据时,WinStation驱动程序将对ICA流中的虚拟通道数据进行多路分解,然后将其立即传递给客户端虚拟驱动程序。
4.根据权利要求3所述的一种基于RPC的远程应用自动化系统,其特征在于:所述客户端虚拟驱动程序如果具有要发送到服务器的数据,则在WinStation驱动程序下次对其进行轮询时将发送数据。
5.根据权利要求4所述的一种基于RPC的远程应用自动化系统,其特征在于:所述服务器接收到数据后,会将其排队,直到虚拟通道应用程序读取它为止,且服务器虚拟通道应用程序完成后,其关闭虚拟通道并释放所有分配资源。
6.根据权利要求1所述的一种基于RPC的远程应用自动化系统,其特征在于:所述Virtual Channel Client虚拟通道程序的客户端组件是一个动态连接库(Dll),且dll在客户计算机的终端服务初始化时被加载在mstsc.exe中,同时必须被注册到客户计算机中,在注册表中注册客户端dll的名称。
7.根据权利要求6所述的一种基于RPC的远程应用自动化系统,其特征在于:所述dll注册路径是下面路径之一加入子键:
HKEY_CURRENT_USER/Software/Microsoft/Terminal Server Client/Default/Addins;或HKEY_CURRENT_USER/Software/Microsoft/Terminal Server
Client/connection/Addins;其中所述dll加入到Default/Addins键下会应用于所有的连接;且dll加入到connection/Addins键下仅仅应用于指定的连接,同时连接可以使用连接管理器创建和管理。
8.根据权利要求7所述的一种基于RPC的远程应用自动化系统,其特征在于:所述子键可以是任意的名称,且其必须包含一个REG_SZ或者REG_EXPAND_SZ型的值;其中所述REG_SZ或者REG_EXPAND_SZ值的原型为Name=DLLname,且如果使用一个REG_EXPAND_SZ值,那么它包括一个未扩展的环境变量,这个变量将在运行时扩展;DLLname的值是一个全路径,并且如果DLLname没有包括一个全路径,那么将应用标准的Dll搜索路径。
9.根据权利要求6所述的一种基于RPC的远程应用自动化系统,其特征在于:所述dll导出了一个VirtualChannelEntry函数,且这个函数在终端服务初始化时被调用,则这个VirtualChannelEntry入口指向一个CHANNEL_ENTRY_POINTS结构的指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110473306.9A CN113176957B (zh) | 2021-04-29 | 2021-04-29 | 一种基于rpc的远程应用自动化系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110473306.9A CN113176957B (zh) | 2021-04-29 | 2021-04-29 | 一种基于rpc的远程应用自动化系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113176957A CN113176957A (zh) | 2021-07-27 |
CN113176957B true CN113176957B (zh) | 2024-05-03 |
Family
ID=76925622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110473306.9A Active CN113176957B (zh) | 2021-04-29 | 2021-04-29 | 一种基于rpc的远程应用自动化系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113176957B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101909061A (zh) * | 2010-08-06 | 2010-12-08 | 福建升腾资讯有限公司 | 基于远程显示协议的动态虚拟通道的创建和应用方法 |
CN104598257A (zh) * | 2013-10-30 | 2015-05-06 | 华为技术有限公司 | 远程应用程序运行的方法和装置 |
GB202020558D0 (en) * | 2019-12-23 | 2021-02-03 | Ultima Business Solutions Ltd | A system and method for automated process orchestration |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685287B2 (en) * | 2002-05-30 | 2010-03-23 | Microsoft Corporation | Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports |
US8001553B2 (en) * | 2007-06-25 | 2011-08-16 | Microsoft Corporation | Aggregate computer system via coupling of computing machines |
US20080320500A1 (en) * | 2007-06-25 | 2008-12-25 | Microsoft Corporation | Remote human interface device in an aggregate computer system |
US7886050B2 (en) * | 2007-10-05 | 2011-02-08 | Citrix Systems, Inc. | Systems and methods for monitoring components of a remote access server farm |
US8769428B2 (en) * | 2009-12-09 | 2014-07-01 | Citrix Systems, Inc. | Methods and systems for generating a combined display of taskbar button group entries generated on a local machine and on a remote machine |
US20120066681A1 (en) * | 2010-09-12 | 2012-03-15 | Levy Tomer | System and method for management of a virtual machine environment |
US10757079B2 (en) * | 2016-01-12 | 2020-08-25 | Jens Schmidt | Method and system for controlling remote session on computer systems using a virtual channel |
US20200192539A1 (en) * | 2018-12-13 | 2020-06-18 | Vmware, Inc. | System and method for operating system event redirection |
-
2021
- 2021-04-29 CN CN202110473306.9A patent/CN113176957B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101909061A (zh) * | 2010-08-06 | 2010-12-08 | 福建升腾资讯有限公司 | 基于远程显示协议的动态虚拟通道的创建和应用方法 |
CN104598257A (zh) * | 2013-10-30 | 2015-05-06 | 华为技术有限公司 | 远程应用程序运行的方法和装置 |
GB202020558D0 (en) * | 2019-12-23 | 2021-02-03 | Ultima Business Solutions Ltd | A system and method for automated process orchestration |
Non-Patent Citations (2)
Title |
---|
"基于虚拟化技术的证券开放式业务私有云平台的设计与实现";季常青;《中国优秀硕士学位论文全文数据库 信息科技辑》;全文 * |
轻量级虚拟机系统资源保护层研究;申文迪;罗克露;;计算机工程(第14期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113176957A (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5926636A (en) | Remote procedural call component management method for a heterogeneous computer network | |
US5721876A (en) | Sockets application program mechanism for proprietary based application programs running in an emulation environment | |
US6038593A (en) | Remote application control for low bandwidth application sharing | |
US8291486B2 (en) | Gateway device having socket library for monitoring, communication method of gateway device having socket library for monitoring, and communication program of gateway device having socket library for monitoring | |
US7971207B2 (en) | Method, system, and computer program product for representing and connection-oriented device in a known format | |
JP3853592B2 (ja) | 分散ウェブアプリケーションサーバ | |
US7080120B2 (en) | System and method for collaborative processing of distributed applications | |
KR100722355B1 (ko) | 동적 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치 | |
US7080386B2 (en) | Architecture with digital signal processor plug-ins for general purpose processor media frameworks | |
US6405266B1 (en) | Unified publish and subscribe paradigm for local and remote publishing destinations | |
US5999986A (en) | Method and system for providing an event system infrastructure | |
US7028091B1 (en) | Web server in-kernel interface to data transport system and cache manager | |
US20040153511A1 (en) | Exchanging electronic messages between a host computer system and a distributed computer system | |
US20030145230A1 (en) | System for exchanging data utilizing remote direct memory access | |
JP2001523864A (ja) | 多数のクライアント−サーバ・セッションおよび以前のセッションへのユーザのダイナミック再接続をサポートするサーバ・オペレーティング・システム | |
KR100772175B1 (ko) | 네트워크 로봇 시스템 및 네트워크 로봇 시스템에서의 통신방법 | |
US20020046304A1 (en) | Dynamic class loading | |
CN111064771B (zh) | 一种网络请求处理方法及系统 | |
US20040049530A1 (en) | Distributed computer system using a graphical user interface toolkit | |
JPH09265440A (ja) | ネットワーク接続されたディジタル・コンピュータ・システム用のネットワーク通信サブシステム | |
EP1088422B1 (en) | A telecommunication controller messaging system | |
EP1164482B1 (en) | System and method for interactive communication between objects in a distributed computing environment | |
US7769828B2 (en) | System for provisioning time sharing option (TSO) and interactive productivity system facility (ISPF) services in a network environment | |
US6393494B1 (en) | Method, computer program product, and system for managing connection-oriented media | |
JP2002342186A (ja) | 機能モジュール及びホームネットワーク機器制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |