一种远程会话管理的方法、系统、存储介质及设备
文献发布时间:2024-04-18 19:58:21
技术领域
本发明属于计算机技术领域,具体涉及一种远程会话管理的方法、系统、存储介质及设备。
背景技术
RemoteApp是Windows远程桌面的一个进阶功能。不同于显示完整屏幕内容的远程桌面,RemoteApp允许用户在本地计算机上访问和运行远程服务器上的应用程序,将目标设备中的应用程序,在本地桌面环境中进行显示,实现与VMware Unity模式相同,甚至更优秀的体验。例如QQ、微信、百度网盘等应用的任务栏托盘图标交互,都可以完美的在本地环境中使用。通过使用Windows Remote App,用户可以在自己的计算机上运行远程应用程序,就像它们是在本地安装的一样,而无需在本地计算机上安装应用程序。
在现有的RemoteApp程序的体系结构中,RDPINIT.EXE的实例在终端服务器上为每个用户RemoteApp会话运行。RDPINIT.EXE由USERINIT加载.EXE作为USERINIT.EXE的RemoteApp特定实现。RDPINIT.EXE监视RDPSHELL.EXE进程的启动和关闭。RDPSHELL.EXE是用来代替EXPLORER.EXE提供RemoteApp功能的shell。RDPINIT.EXE监控RDPSHELL的进程生命周期并在异常终止时重新启动它。RDPSHELL.EXE将一组Windows事件挂钩加载到会话中的每个用户桌面上。这些事件挂钩允许RDPSHELL.EXE监视桌面上所有窗体的状态。在远程应用程序关闭时,其启动的应用程序仍然在运行,RDPSHELL.EXE监视到窗体仍然存在,不会终止终端服务器与该应用程序关联。从而导致会话一直无法注销。
使用RDPINIT.EXE监控RDPSHELL.EXE的方式,在启动远程应用程序时不直接启动目标应用,而是启动监控程序,由监控程序启动目标应用。在windows的进程管理中RemoteApp的进程不一定是RDPSHELL.EXE的子进程,例如explorer.exe就不会出现在RDPSHELL.EXE子进程列表中,因此将不能以父子进程的关联来追踪目标应用启动的其他程序。
在现有的运维审计系统中,在windows平台使用RemoteApp的方案来实现远程应用访问,整个访问的生命周期由windows本身进行管理,给用户带来本地应用的体验。用户在实际使用时:远程应用的窗体在本地计算机上展示,用户可以使用应用窗体的关闭按钮关闭应用,用户关闭应用之后,windows应用中心的RemoteApp会话自动结束。但是,在windows部分版本下,存在部分后端运行的应用,例如打印机进程,输入法进程等。由于这些进程的存活导致会话无法自动结束,特别是输入法进程,输入法可能会有一个自定义的窗体,该窗体在用户使用远程应用时也会在用户本地计算机上展示,但用户无法对窗体进行任何关闭的操作,严重影响用户体验。同时由于会话不结束,windows应用中心一直维持该会话会造成资源消耗。
在现有技术中,当RemoteApp启动应用程序A时,在应用程序A的会话中,应用程序可能启动一些其他应用B,C,D等,常规技术手段PID的方式:启动应用程序A之后能够拿到A的PID,但是如果需要判断B,C,D是否退出,需要对应用程序A进行改造,改造方式主要有两种:第一种:应用程序A阻塞等待应用B,C,D退出;第二种在应用程序A中返回应用B,C,D的PID;但B,C,D可能还会启动其他应用,会一直不断的嵌套,需要改造修改每一个应用程序来实现,用户使用到应用程序多种多样,无法完全覆盖。
发明内容
本发明的目的在于提供一种远程会话管理的方法、系统、存储介质及设备,通过进程的PID,环境变量,黑名单的方式综合确定Remote App是否退出,退出则主动注销会话。
本发明主要通过以下技术方案实现:
一种远程会话管理的方法,启动器在启动目标应用的同时启动监控程序;由监控程序监控目标应用和目标应用启动的其他应用是否关闭,如果关闭,则注销该会话;包括以下步骤:
步骤S100:将目标应用的PID作为进程标识符,在系统中唯一标识目标应用进程;在启动器启动目标应用时,设置会话ID到环境变量中,启动监控程序;
步骤S200:监控进程通过当前运行进程的环境变量usmdriver是否等于会话ID来判断是否属于当前应用程序启动的子进程,获取进程列表,跟踪目标应用及其启动的其他进程;
步骤S300:通过设置黑名单确定需要忽略的进程,若进程存在于黑名单,则监控进程在检查活动进程时忽略该进程,最终实现通过目标应用的PID、环境变量、黑名单一起来确定远程应用是否退出,若退出,则主动注销会话。
为了更好地实现本发明,进一步地,所述步骤S100包括以下步骤:
步骤S101:启动器生成一个标识本次会话的唯一标识符,并作为会话ID;
步骤S102:启动器将会话ID设置到启动目标应用的环境变量usmdriver中,同时启动目标应用,记录目标应用的PID;
步骤S103:启动器使用会话ID和PID作为参数启动监控程序。
为了更好地实现本发明,进一步地,所述步骤S300包括以下步骤:
步骤S301:检查进程列表中的进程是否有待检查项,若有则进入步骤步骤S302,否则注销进程;
步骤S302:检查是否是目标应用的PID,若是,则进入步骤步骤S200,否则进入步骤S303,
步骤S303:检查进程是否存在于黑名单中,若存在,则忽略并进入步骤S301,否则进入步骤S304;
步骤S304:检查环境变量中是否有会话ID,若没有,则进入步骤S301,否则进入步骤S200。
为了更好地实现本发明,进一步地,所述步骤S300中,基于进程列表,确定影响会话注销的应用,并将对应的进程信息放入黑名单中。
为了更好地实现本发明,进一步地,所述步骤S300中,监控程序在检查时,在日志中记录下影响本次注销的会话的进程信息,当用户遇到无法注销的情况时,根据日志进行排查,并将影响的应用手动添加在黑名单中,下次检测时就会忽略该进程。
本发明主要通过以下技术方案实现:
一种远程会话管理的系统,采用上述的方法进行,包括启动模块、监控模块、判断模块、注销模块;所述启动模块用于基于会话ID和PID作为参数启动监控模块,所述监控模块用于基于环境变量获取进程列表,所述判断模块用于判断进程是否属于黑名单,实现确定远程应用是否退出,所述注销模块用于注销确定退出的远程应用的会话。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的方法。
一种电子设备,包括存储器和处理器;所述存储器上存储有计算机程序;所述处理器,用于执行所述存储器中的所述计算机程序,以实现上述的方法。
本发明中,PID是"进程标识符"(Process Identifier)的缩写。在计算机操作系统中,PID是用于唯一标识正在运行的进程(程序的实例)的数字值。每个正在运行的进程都被分配一个唯一的PID。这个标识符可以用于跟踪、管理和控制进程。当你打开一个应用程序或者执行一个任务时,操作系统会为该进程分配一个PID,并使用该PID来识别和操作该进程。
环境变量(Environment Variables)是操作系统中用于存储和传递配置信息的动态值。它们是在操作系统级别定义的,可以由各种应用程序和进程访问和使用。环境变量通常包含一对名称和值,可以用来指定系统的各种属性、路径、默认设置和行为。它们在操作系统启动时被创建,并在整个会话期间保持有效。
本发明的有益效果如下:
(1)本发明在该流程中新增监控程序,通过进程的PID,环境变量,黑名单等多种方式综合确定RemoteApp是否退出,退出则主动注销会话;解决了RemoteApp关闭之后但是远程会话未退出问题。
(2)本发明利用环境变量传递参数给子进程的特性:通过获取运行进程的环境变量值usmdriver来判断是否属于A启动的子进程,无需对应用进行改造,也不会干扰应用程序的正常运行,属于旁路检测,实现能够零入侵检测。本发明可以及时断开远程连接并注销会话,在提升用户体验的同时,节省系统资源。
(3)本发明使用PID,环境变量进行综合判断:能够有效的跟踪目标应用及其启动其他进程,不需要强制要求远程应用使用时,串行启动其他应用并阻塞等待其退出,能够适应各种场景。同时监控程记录影响退出的应用进程到日志中,用户通过记录的日志和黑名单,能自主忽略影响的注销的进程,具有良好的扩展性。
附图说明
图1为本发明的监控程序的流程图。
具体实施方式
实施例1:
一种远程会话管理的方法,在运维审计的系统中,通常是启动一个定制的启动器,然后由启动器启动目标应用,这种场景下,启动器在启动目标应用的同时启动监控程序;由监控程序监控目标应用和目标应用启动的其他应用是否关闭,如果关闭则注销该会话。本发明通过PID,环境变量,黑名单一起来确定目标应用是否关闭。目标应用PID作为进程标识符,在系统中唯一标识目标应用进程;在环境变量中新增会话ID来实追踪目标应用启动的其他应用;同时提供黑名单的配置,可以将应用进程忽略,避免异常的进程的干扰。
优选地,确定本次会话的进程:在应用程序A的会话中,应用程序可能启动一些其他应用B,C,D等,本方案中利用环境变量传递参数给子进程的特性,在启动器在启动目标应用时设置会话ID到环境变量中,监控进程通过获取当前运行进程的环境变量usmdriver值来判断是否属于A启动的子进程。
优选地,确定需要忽略的进程:基于上述的运行进程数据,可以知道是哪些应用影响了会话的注销,人为的判断,并且将进程信息放入黑名单中,监控进程在检查活动进程时,判断进程是否在黑名单中,存在则进行忽略。
优选地,本发明主要包括以下步骤:
1. 监控启动流程:
(1)启动器生成一个唯一标识的字符串,标识本次会话,作为 会话ID
(2)启动器将会话ID设置到启动目标应用的环境变量中,同时启动目标应用,记录目标应用的PID
(3)启动器使用会话ID和PID作为参数启动监控程序
监控程序监控流程:
2. 如图1所示,监控程序监控流程:
a.解析配置文件,获取进程列表;
b.检查列表中进程,若无待检查项,则注销会话,若有,在进入下一步骤;
c.检查是否目标应用的PID,若是,则进入步骤a,否则,进入步骤d;
d.检查是否存在于黑名单,若是,则进入步骤b,否则,进入步骤e;
e.检查环境变量中是否有会话ID,若有,则进步步骤a,否则,进入步骤b。
优选地,监控程序在检查时,会在日志中记录下影响本次注销的会话的进程信息,用户在遇到无法注销的情况时,可以根据日志进行排查,并将影响的应用手动添加黑名单中,下次检测时就会忽略改进程。
本发明利用环境变量传递参数给子进程的特性:通过获取运行进程的指定环境变量值来判断是否属于A启动的子进程,无需对应用进行改造,也不会干扰应用程序的正常运行,属于旁路检测,实现能够零入侵检测。本发明可以及时断开远程连接并注销会话,在提升用户体验的同时,节省系统资源。本发明使用PID,环境变量进行综合判断:能够有效的跟踪目标应用及其启动其他进程,不需要强制要求远程应用使用时,串行启动其他应用并阻塞等待其退出,能够适应各种场景。同时监控程记录影响退出的应用进程到日志中,用户通过记录的日志和黑名单,能自主忽略影响的注销的进程,具有良好的扩展性。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
- 一种数据存储方法、调度装置、系统、设备及存储介质
- 一种存储系统的状态检测方法、装置、设备及存储介质
- 一种数据存储方法、系统、智能可穿戴设备及存储介质
- 一种存储系统的构建方法、装置、设备及存储介质
- 远程拖动操作内容同步系统、方法、设备及存储介质
- 中间会话管理功能设备发现方法、设备和系统、存储介质
- 一种会话管理方法、系统、设备及存储介质