LINUX终端无缝访问远程WINDOWS应用程序的方法及其装置.pdf

上传人:111****112 文档编号:1038233 上传时间:2018-03-27 格式:PDF 页数:14 大小:779.37KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910163708.8

申请日:

2009.08.14

公开号:

CN101676875A

公开日:

2010.03.24

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 9/46申请公布日:20100324|||实质审查的生效IPC(主分类):G06F 9/46申请日:20090814|||公开

IPC分类号:

G06F9/46; G06F9/54; H04L29/06

主分类号:

G06F9/46

申请人:

北京北大众志微系统科技有限责任公司

发明人:

程 旭; 张 杨; 杨 琦; 管雪涛

地址:

100032北京市海淀区中关村北大街151号资源大厦11层

优先权:

2008.8.15 CN 200810118504.8

专利代理机构:

北京律诚同业知识产权代理有限公司

代理人:

梁 挥;祁建国

PDF下载: PDF下载
内容摘要

本发明公开了一种Linux终端无缝访问远程Windows应用程序的方法及其装置,其中该装置包括:Windows服务器端,用于截获Windows应用程序所需的显示调用;Linux客户端,用于从所述Windows服务器端接收所述显示调用,将所述显示调用转换为本地绘图操作,根据所述本地绘图操作完成实际的绘制操作。本发明实现了无缝访问远程Windows应用程序。

权利要求书

1、  一种Linux终端无缝访问远程Windows应用程序的方法,其特征在于,该方法包括:
步骤一,Windows服务器端截获Windows应用程序所需的显示调用,并发送给Linux客户端;
步骤二,所述Linux客户端将从所述Windows服务器端接收的所述显示调用转换为本地绘图操作,调用所述本地绘图操作完成实际的绘制操作。

2、
  根据权利要求1所述的Linux终端无缝访问远程Windows应用程序的方法,其特征在于,所述步骤一中,进一步包括:
通过远程代理对所述Windows服务器端的用户帐号及应用程序权限信息进行维护的步骤。

3、
  根据权利要求2所述的Linux终端无缝访问远程Windows应用程序的方法,其特征在于,所述步骤一中,进一步包括:
当所述Linux客户端通过本地代理要创建远程应用时,所述远程代理接收由所述本地代理发送的用户帐号信息及应用程序信息,并对所述Windows应用程序进行权限检查,当权限检查通过后,在所述服务器端启动相应的应用程序的步骤。

4、
  根据权利要求3所述的Linux终端无缝访问远程Windows应用程序的方法,其特征在于,所述步骤一中,进一步包括:
当所述应用程序权限检查失败后,所述远程代理结束与所述本地代理之间通信的步骤;或
当所述Windows服务器端的用户帐号不具备启动相应的应用程序的权限时,所述远程代理结束与所述本地代理之间通信的步骤。

5、
  根据权利要求3或4所述的Linux终端无缝访问远程Windows应用程序的方法,其特征在于,所述步骤一中,进一步包括:
当所述Windows应用程序启动后,所述远程代理将通过Hook Dll截获的所述显示调用发送至所述本地代理的步骤。

6、
  根据权利要5所述的Linux终端无缝访问远程Windows应用程序的方法,其特征在于,所述步骤二中,进一步包括:
所述本地代理将所述显示调用转换成所述Linux客户端的本地绘图操作,在所述Linux客户端绘制所述Windows应用程序的窗口,并将用户针对所述远程应用的鼠标/键盘操作发送至所述远程代理,由所述远程代理将所述鼠标/键盘操作送至对应的应用程序进行处理的步骤。

7、
  根据权利要求3、4或5所述的Linux终端无缝访问远程Windows应用程序的方法,其特征在于,所述步骤二中,进一步包括:
当所述Linux客户端希望结束所述Windows应用程序时,通过所述本地代理向所述远程代理发送消息,所述远程代理根据所述消息通知所述Windows应用程序结束的步骤。

8、
  一种Linux终端无缝访问远程Windows应用程序的装置,其特征在于,该装置包括:
Windows服务器端,用于截获Windows应用程序所需的显示调用;
Linux客户端,用于从所述Windows服务器端接收所述显示调用,将所述显示调用转换为本地绘图操作,根据所述本地绘图操作完成实际的绘制操作。

9、
  根据权利要求8所述的Linux终端无缝访问远程Windows应用程序的装置,其特征在于,所述Windows服务器端包括:
Hook Dll模块,用于捕获所述显示调用;
远程代理模块,连接所述Hook Dll模块,用于从所述Hook Dll模块接收所述显示调用,并将所述显示调用发送给所述Linux客户端;
虚拟显示驱动模块,用于维护与所述本地绘图操作相应的数据结构;
输入设备驱动模块,连接所述远程代理模块,用于对所述Windows服务器端的输入设备驱动进行修改,以对从所述远程代理接收的鼠标/键盘事件进行处理。

10、
  根据权利要求8所述的Linux终端无缝访问远程Windows应用程序的装置,其特征在于,所述Linux客户端包括:
本地代理模块,用于将所述远程代理模块发送的所述显示调用转换为本地绘制操作;
显示设备驱动模块,用于在所述本地代理模块的调用下,根据所述本地绘图操作完成实际的绘制操作;
输入设备驱动模块,用于将用户的针对所述远程应用的鼠标/键盘操作送至对应的应用程序处理。

说明书

Linux终端无缝访问远程Windows应用程序的方法及其装置
技术领域
本发明涉及访问远程Windows应用程序的方法,特别是涉及一种基于C/S(Client/Server,客户端/服务器端)架构的Linux终端访问远程Windows应用程序的方法及其装置,以保证Windows应用程序能够无缝地显示在Linux终端窗口系统中,对于用户是透明的。
背景技术
现有的在Linux终端上访问Windows程序的方法,大体上可以分成三类:一类是利用瘦客户协议(例如RDP、VNC、THINC等)访问远程Windows服务器,另一类是在Linux系统上运行模拟器(例如VMWare等),最后一类是在Linux系统中提供Windows API的实现(例如Wine等)。并且这三种方法中只有瘦客户协议方法能够访问远程Windows应用程序,后两种方法一般将Windows应用程序放到Linux终端上运行。其中RDP(Remote DesktopProtocol)是远程桌面协议,VNC(Virtual Network Computing)是虚拟网络计算,THINC(Thin-Client Internet Computing)是瘦客户网络计算,API(Application Program Interface)是应用程序接口。
瘦客户协议方法对用户完全透明,性能较高,并且对Linux客户端要求低,因此得到了广泛应用。但这些瘦客户协议一般显示的是整个Windows窗口而非单个应用程序,因此所有远程应用程序都在本地的一个任务栏中。当Linux终端用户需要在本地应用和远程应用之间切换窗口时,或者用户需要运行多个服务器上的应用程序时,单纯的瘦客户协议不能很好的满足用户需要。为了进一步提升用户的体验,出现了无缝窗口(Seamless Window)的概念。无缝窗口使得远程应用程序在外观、感觉以及执行等各方面都与本地安装的应用程序类似,它并没有一个公认的定义,可简单的归纳为如下几点:
1、应用程序在外观上不具有远程桌面框架;
2、用户可以最大化、最小化或者调整应用程序的窗口大小;
3、用户可以像点击和拖动本地应用程序的窗口一样移动应用程序到达会话窗口;
4、当从已有应用程序的窗口中启动一个新的应用程序时,一个应用程序按钮将出现在用户的任务栏上。
虽然在一些商业系统例如Citrix MetaFrame等已经集成了无缝窗口的概念,但这些无缝窗口的实现技术一般是基于窗口裁减的,也就是说,实际上完整的用户会话,包括整个Windows桌面及相关的进程都是存在的,通过服务器端或客户端的裁剪,只显示了属于该应用程序窗口的部分。
发明内容
本发明所要解决的技术问题在于提供一种Linux终端无缝访问远程Windows应用程序的方法及其装置,用于解决现有技术中无法实现对Windows应用程序的真正的无缝访问,从而导致服务器端计算和存储资源的浪费,以致无法提升服务容量的问题。
为了实现上述目的,本发明提供了一种Linux终端无缝访问远程Windows应用程序的方法,其特征在于,该方法包括:
步骤一,Windows服务器端截获Windows应用程序所需的显示调用,并发送给Linux客户端;
步骤二,所述Linux客户端将从所述Windows服务器端接收的所述显示调用转换为本地绘图操作,调用所述本地绘图操作完成实际的绘制操作。
所述的Linux终端无缝访问远程Windows应用程序的方法,其中,所述步骤一中,进一步包括:
通过远程代理对所述Windows服务器端的用户帐号及应用程序权限信息进行维护的步骤。
所述的Linux终端无缝访问远程Windows应用程序的方法,其中,所述步骤一中,进一步包括:
当所述Linux客户端通过本地代理要创建远程应用时,所述远程代理接收由所述本地代理发送的用户帐号信息及应用程序信息,并对所述Windows应用程序进行权限检查,当权限检查通过后,在所述服务器端启动相应的应用程序的步骤。
所述的Linux终端无缝访问远程Windows应用程序的方法,其中,所述步骤一中,进一步包括:
当所述应用程序权限检查失败后,所述远程代理结束与所述本地代理之间通信的步骤;或
当所述Windows服务器端的用户帐号不具备启动相应的应用程序的权限时,所述远程代理结束与所述本地代理之间通信的步骤。
所述的Linux终端无缝访问远程Windows应用程序的方法,其中,所述步骤一中,进一步包括:
当所述Windows应用程序启动后,所述远程代理将通过Hook Dll截获的所述显示调用发送至所述本地代理的步骤。
所述的Linux终端无缝访问远程Windows应用程序的方法,其中,所述步骤二中,进一步包括:
所述本地代理将所述显示调用转换成所述Linux客户端的本地绘图操作,在所述Linux客户端绘制所述Windows应用程序的窗口,并将用户针对所述远程应用的鼠标/键盘操作发送至所述远程代理,由所述远程代理将所述鼠标/键盘操作送至对应的应用程序进行处理的步骤。
所述的Linux终端无缝访问远程Windows应用程序的方法,其中,所述步骤二中,进一步包括:
当所述Linux客户端希望结束所述Windows应用程序时,通过所述本地代理向所述远程代理发送消息,所述远程代理根据所述消息通知所述Windows应用程序结束的步骤。
为了实现上述目的,本发明还提供了一种Linux终端无缝访问远程Windows应用程序的装置,其特征在于,该装置包括:
Windows服务器端,用于截获Windows应用程序所需的显示调用;
Linux客户端,用于从所述Windows服务器端接收所述显示调用,将所述显示调用转换为本地绘图操作,根据所述本地绘图操作完成实际的绘制操作。
所述的Linux终端无缝访问远程Windows应用程序的装置,其中,所述Windows服务器端包括:
Hook Dll模块,用于捕获所述显示调用;
远程代理模块,连接所述Hook Dll模块,用于从所述Hook Dll模块接收所述显示调用,并将所述显示调用发送给所述Linux客户端;
虚拟显示驱动模块,用于维护与所述本地绘图操作相应的数据结构;
输入设备驱动模块,连接所述远程代理模块,用于对所述Windows服务器端的输入设备驱动进行修改,以对从所述远程代理接收的鼠标/键盘事件进行处理。
所述的Linux终端无缝访问远程Windows应用程序的装置,其中,所述Linux客户端包括:
本地代理模块,用于将所述远程代理模块发送的所述显示调用转换为本地绘制操作;
显示设备驱动模块,用于在所述本地代理模块的调用下,根据所述本地绘图操作完成实际的绘制操作;
输入设备驱动模块,用于将用户的针对所述远程应用的鼠标/键盘操作送至对应的应用程序处理。
所述的Linux终端无缝访问远程Windows应用程序的装置,其中,所述Linux客户端希望结束所述Windows应用程序时,由所述本地代理模块发送消息给所述远程代理模块,所述远程代理根据所述消息通知所述Windows应用程序结束。
本发明的有益技术效果:
与现有RDP技术等相比,本发明提出的从Linux终端无缝访问Windows应用程序的方法是一种基于GDI迁移的Linux终端无缝访问远程Windows应用程序的方法,该方法实现了对Windows应用程序的无缝访问,在适当增加网络传输数据量的情况下,能够减少Windows服务器端计算和存储资源开销,从而提升服务器容量。本发明的方法从如下几个角度减少了Windows服务器端的开销:
1)不需要在虚拟显示驱动中产生实际的位图;
2)不需要在网络数据传输时对位图进行各种操作。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为本发明基于GDI迁移的Linux终端无缝访问远程Windows应用程序的装置结构图;
图2为本发明基于GDI迁移的Linux终端无缝访问远程Windows应用程序的方法流程图。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步更详细的描述。
如图1所示,为本发明基于GDI迁移的Linux终端无缝访问远程Windows应用程序的装置结构图。该装置100包括:Windows服务器端10和Linux客户端20两大部分,且Windows服务器端10、Linux客户端20之间通过网络30互联,并且Linux客户端20具有图形显示能力。该发明的技术方案如下:
Windows服务器端10截获应用程序必要的相关显示调用,并通过网络30转发给Linux客户端20。
Linux客户端20处理从Windows服务器端10接收到的相关显示调用,并将相应的调用转换为本地的绘制操作(如X请求),然后调用本地的显示设备驱动模块22完成实际的绘制操作。
Linux客户端20需要将用户的鼠标/键盘事件转发给Windows服务器端10处理,类似于瘦客户协议。
为了能够完成上述要求,需要Windows服务器端10和Linux客户端20都进行相应的设置,分别描述如下:
Windows服务器端10包括的主要部件为:远程代理模块11、Hook Dll模块12、GDI32模块13、窗口管理器14、虚拟显示驱动模块15、输入设备驱动模块16。传统的操作系统一般将虚拟内存划分为内核空间和用户空间。图1中的内核空间内存区域是提供给操作系统内核、内核扩展以及一些设备驱动运行的空间,图1中的用户空间内存区域是提供给所有用户态应用程序运行的空间。
1)远程代理模块11:主要工作是负责接收来自Hook Dll模块12捕获的GDI调用,并将GDI调用打包发送给Linux客户端20的本地代理模块21,同时从本地代理模块21接收鼠标/键盘事件,对该鼠标/键盘事件完成坐标转换后,发送到输入设备驱动模块16。
由于远程代理模块11需要同时支持多个Linux客户端20,因此需要负责维护Windows服务器端10的应用程序与Linux客户端20的映射关系。另外,Windows服务器端10的应用程序向远程代理模块11进行注册,所以远程代理模块11也负责维护该应用程序的注册信息,并实现对单个应用程序的控制。其中,注册信息包括Windows服务器端10的用户账号信息以及应用程序权限信息。
2)Hook Dll模块12:负责在Windows应用程序运行时捕获GDI32模块13生成的显示调用(GDI调用等),并将这些显示调用传给远程代理模块11,Windows应用程序的显示调用同时进入GDI32模块13。特别地,为了让远程代理模块11能够区分这些GDI调用应当发送给哪个Linux客户端20的应用程序,需要在GDI调用中添加进程信息等。这种方法可以控制单独的应用程序。
3)GDI32模块13:主要根据应用程序的图形请求,生成Windows应用程序的显示调用。GDI是Windows图形驱动程序和应用之间的中介支持。应用程序调用Win32GDI函数进行图形输出请求,这个请求通过核心模式GDI发送。然后核心模式GDI把这些请求发送到相应的图形驱动程序,如显示器驱动程序或打印机驱动程序。核心模式GDI是一个不能被替代的系统提供的模块。Win32GDI和图形引擎都是完全与设备无关的,应用不需要直接访问硬件。
4)窗口管理器14:主要负责在图形用户界面的视窗系统中,通过提供桌面环境来控制窗口的位置与外观,并处理输入设备驱动模块16转交的鼠标/键盘事件。
5)虚拟显示驱动模块15:当应用程序运行时,新的虚拟显示驱动模块15只需要维护相应的数据结构,实际上并不完成绘制操作。
6)输入设备驱动模块16:需要对Windows服务器端10的输入设备驱动进行一定的修改,以将从远程代理模块11接收的鼠标/键盘事件作为真实的鼠标/键盘事件,并交给窗口管理器14进行处理。
Linux客户端20包括的主要部件为:本地代理模块21、X Server 23、窗口管理器24、显示设备驱动模块25、输入设备驱动模块26。
1)本地代理模块21:主要工作为负责将远程代理模块11发送的显示调用转换为本地绘制操作,通过X Server 23调用本地的显示设备驱动模块25,由显示设备驱动模块25完成实际的绘制操作,并将用户的针对远程应用的鼠标/键盘操作送至远程代理模块11处理。
具体地,本地代理模块21接收来自远程代理模块11的绘制请求,将其转换为本地的图形绘制命令(例如X协议)。还负责将用户针对远程应用的鼠标/键盘事件发送回Windows服务器端10处理。本地代理模块21在接收到绘制请求时,首先与远程代理模块11完成密钥交换等必要的安全机制,再进行转换处理。
2)X Server 23,用于调用显示设备驱动模块25。
3)窗口管理器24,主要负责在图形用户界面的视窗系统中,通过提供桌面环境来控制窗口的位置与外观,并处理输入设备驱动模块26转交的鼠标/键盘事件。
4)显示设备驱动模块25,用于根据本地绘制操作完成实际的绘制操作。
5)输入设备驱动模块26,用于对Linux客户端20的输入设备驱动进行一定的修改,以将从本地代理模块21接收的鼠标/键盘事件作为真实的鼠标/键盘事件,并交给X Server 23进行处理。
当本地代理模块21希望创建一个远程应用时,需要向远程代理模块11发送消息,消息内容包括应用程序在远程代理模块11中注册的名字以及用户账号信息,以便让Windows服务器端10进行权限检查(可以提供服务发现等附加功能,让Linux客户端20能够发现Windows服务器端10提供的应用);远程代理模块11完成权限检查,决定是否可以启动该应用程序。
当权限检查通过后,在Windows服务器端10运行相应的应用程序,在运行应用程序的过程中,需要同时完成Hook Dll的注入等工作;Hook Dll模块12将捕获的GDI调用发送给远程代理模块11,再由远程代理模块11将GDI调用转发给相应的本地代理模块21;本地代理模块21从远程代理模块11接收到GDI调用后,将其转换成Linux客户端20的本地绘制操作(如X请求),Linux客户端20将绘制应用程序的窗口。
Linux客户端20将针对远程应用的鼠标/键盘等操作,通过本地代理模块21转发给远程代理模块11;远程代理模块11从本地代理模块21接收到这些鼠标/键盘操作后,将会转发给输入设备驱动模块16处理。
当Linux客户端20希望结束应用程序时,发送消息给远程代理模块11,Windows服务器端10将会通知应用程序结束。
如图2所示,为本发明基于GDI迁移的Linux终端无缝访问远程Windows应用程序的方法流程图。该流程描述了Windows服务器端10和Linux客户端20之间交互的全过程:
步骤S201,Windows服务器端10的应用程序向远程代理模块11进行注册,远程代理模块11维护各应用程序的注册信息,其中注册信息包括Windows服务器端10的用户账号信息以及应用程序的权限信息;
步骤S202,Linux客户端20的本地代理模块21向远程代理模块11发起连接(如绘制请求),首先与远程代理模块11完成密钥交换等必要的安全机制;
步骤S203,本地代理模块21希望创建一个远程应用,需要向远程代理模块11发送消息,消息的内容包括用户账号信息以及应用程序信息(如应用程序在远程代理模块11中注册的名字),以便让Windows服务器端10对Windows应用程序进行权限检查(可以提供服务发现等附加功能,让Linux客户端20能够发现Windows服务器端10提供的应用);
步骤S204,远程代理模块11完成权限检查,决定是否可以启动该应用程序,若权限检查失败,则远程代理结束与本地代理之间的通信;
该步骤中,进一步地,当Windows服务器端的用户帐号不具备启动相应的应用程序的权限时,则远程代理结束与本地代理之间的通信。
步骤S205,如果权限检查通过,在Windows服务器端10运行相应的应用程序,在运行应用程序的过程中,需要同时完成Hook Dll的注入等工作;
步骤S206,应用程序运行,Hook Dll模块12生效,将捕获的GDI调用发送给远程代理模块11,再由远程代理模块11将GDI调用转发给相应的本地代理模块21;
步骤S207,本地代理模块21从远程代理模块11接收到GDI调用后,将其转换成X请求,Linux客户端20将启动应用程序的窗口;
步骤S208,Linux客户端20将针对远程应用的鼠标/键盘等操作,通过本地代理模块21转发给远程代理模块11;
步骤S209,远程代理模块11从本地代理模块21接收到这些鼠标/键盘操作后,将会转发给对应的应用程序,即输入设备驱动模块16进行处理;
步骤S210,当Linux客户端20希望结束Windows应用程序时,发送消息给远程代理模块11,远程代理模块11根据消息将会通知Windows应用程序结束。
另外,RDP瘦客户协议的实现可以参考ISBN为7-301-01044-3/TP.38的《Microsoft Windows NT Server4.0,终端服务器技术参考》,THINC协议的实现可以参考论文“Implementing Remote Display on Commodity OperatingSystems”,而关于Windows操作系统的图形显示部分,可以参考ISBN为0-13-086985-6的《Windows Graphics Programming Win32 GDI andDirectDraw》。
进一步地,通过RDP瘦客户协议和本发明的比较可知,本发明与RDP瘦客户协议的目的基本一致,都是为了通过Linux客户端访问Windows服务器端的应用程序。不过RDP瘦客户协议技术方案不能保证真正的无缝访问,即使可以做到窗口裁剪,使得用户看起来是无缝访问应用程序的。而本发明解决了这一问题,做到了真正的无缝访问。
RDP瘦客户协议和THINC协议实际上都是基于重写Graphics DeviceDriver的,通过实现虚拟图形驱动,将窗口显示部分变成位图,而不是实际显示在屏幕上,并通过对位图的缓存、压缩、合并等优化措施发送给客户端显示。
本发明基于对应用程序的GDI调用进行转发,在Linux客户端将这些调用转换成本地的图形操作处理。本发明减少了对位图进行的各种操作,因此实际上减少了Windows服务器端的计算和存储开销。
本发明提出的Linux终端无缝访问远程Windows应用程序的方法在适当增加网络传输数据量的情况下,能够节约Windows服务器端的计算和存储资源,从而提升了服务器的容量。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

LINUX终端无缝访问远程WINDOWS应用程序的方法及其装置.pdf_第1页
第1页 / 共14页
LINUX终端无缝访问远程WINDOWS应用程序的方法及其装置.pdf_第2页
第2页 / 共14页
LINUX终端无缝访问远程WINDOWS应用程序的方法及其装置.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《LINUX终端无缝访问远程WINDOWS应用程序的方法及其装置.pdf》由会员分享,可在线阅读,更多相关《LINUX终端无缝访问远程WINDOWS应用程序的方法及其装置.pdf(14页珍藏版)》请在专利查询网上搜索。

本发明公开了一种Linux终端无缝访问远程Windows应用程序的方法及其装置,其中该装置包括:Windows服务器端,用于截获Windows应用程序所需的显示调用;Linux客户端,用于从所述Windows服务器端接收所述显示调用,将所述显示调用转换为本地绘图操作,根据所述本地绘图操作完成实际的绘制操作。本发明实现了无缝访问远程Windows应用程序。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1