专利名称:基于事件驱动实时获取系统中进程信息的方法及系统的制作方法
技术领域:
本发明属于计算机技术领域,涉及一种进程信息获取,尤其涉及一种基于事件驱 动实时获取系统中进程信息的方法;同时,本发明还涉及一种基于事件驱动实时获取系统 中进程信息的系统。
背景技术:
基于Windows系统平台编写系统级别程序时,经常要实现“实时监测系统中进程 信息”此类功能。Windows任务管理器就是实现了此功能的一个Windows系统自带的应用程序。 Windows任务管理器能够列出系统中运行的所有进程,通过它也可以查看到目前刚打开或 关闭的进程。目前,有多种方法可以实现此功能;如方法1、调用进程状态APia^rocess Status API,PSAPI)创建进程快照的接口,获
得进程信息;方法2、调用PSAPI枚举进程的接口,获取进程列表;方法3、调用Windows 终端服务API (Windows Terminal Services API, WTSAPI) ft 举进程接口,获取进程列表;方法4、调用ntdll. dll中的ZwQuerySystemInformation函数来枚举系统进程,获 取进程列表;方法 5、使用 Windows 管理规范(Windows Management Instrumentat ion,WMI)获 取进程列表。欲实时获得新打开或关闭的进程信息,目前都是通过定时轮询的方式获得新打开 或关闭的进程信息。定时轮询模式虽然实现方式简单,但是存在以下问题,在某些场景下, 甚至会严重影响用户体验。(1)轮询时间很难兼顾各种配置的用户终端。在一些低配机器上,会出现CPU占有 率高的情况,从而影响用户体验(2)定时轮询会丢失或延迟获得新打开或关闭的进程信息。(3)定时轮训效率比较低下。此外,通过WMI标准异步事件方法可以接近实时地获取进程信息。但是,当一些受 第三方软件保护(如在用户中广泛使用的360保险箱等)的进程发生打开或关闭事件时, 通过WMI标准异步事件将不能获得进程信息。
发明内容
本发明所要解决的技术问题是提供一种基于事件驱动实时获取系统中进程信息 的方法,可以大大减小CPU占有率。。此外,本发明进一步提供一种基于事件驱动实时获取系统中进程信息的系统,可
4以大大减小CPU占有率。为解决上述技术问题,本发明采用如下技术方案一种基于事件驱动实时获取系统中进程信息的方法,所述方法包括如下步骤步骤Si、调用 CoInitializeEx 初始化 COM 库;步骤S2、调用Cohitializekcurity初始化COM进程安全属性;步骤S3、调用 CoCreatehstance 创建 WMI 实例;步骤S4、调用ConnecUerver连接到本地命名空间;步骤S5、调用CoktProxyBlanket设置代理安全级别;步骤S6、执行异步查询并接收事件通知;步骤S7、通过WMI技术获取初始进程列表及进程相关信息,设置状态信息,状态信 息包括打开状态、存在状态、关闭状态;生成初始进程列表缓存;步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并通过丽I技术获 取进程列表;与初始进程列表缓存进行比较,设置状态信息,状态信息包括打开状态、存在 状态、关闭状态;更新初始进程列表缓存;步骤S9、输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。一种基于事件驱动实时获取系统中进程信息的方法,所述方法包括如下步骤步骤S7、获取初始进程列表及进程相关信息,设置状态信息,生成初始进程列表缓 存;步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表; 与初始进程列表缓存进行比较,设置状态信息,更新初始进程列表缓存;步骤S9、输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。作为本发明的一种优选方案,所述方法在步骤S7之前还包括步骤Si、初始化组件对象模型库;步骤S2、初始化组件对象模型进程安全属性;步骤S3、创建丽I实例;步骤S4、连接到本地;步骤S5、设置代理安全级别;步骤S6、执行异步查询并接收事件通知。作为本发明的一种优选方案,步骤S7中、通过WMI技术获取初始进程列表及进程 相关信息,设置状态信息,生成初始进程列表缓存。作为本发明的一种优选方案,步骤S8中、当打开或关闭进程事件发生时,响应打 开和关闭事件并通过WMI技术获取进程列表。一种基于事件驱动实时获取系统中进程信息的系统,所述系统包括初始进程列表生成模块,用以获取初始进程列表及进程相关信息,设置状态信息, 生成初始进程列表并缓存;初始进程列表更新模块,用以在打开或关闭进程事件发生时,响应打开和关闭事 件并获取进程列表;与初始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表 并缓存;进程信息输出模块,用以输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。作为本发明的一种优选方案,所述初始进程列表生成模块通过WMI技术获取进程 信息,生成初始进程列表并缓存。作为本发明的一种优选方案,所述初始进程列表更新模块在打开或关闭进程事件 发生时,响应打开和关闭事件并通过WMI技术获取进程列表。作为本发明的一种优选方案,所述进一步系统包括组件对象模型库初始化模块,用以初始化组件对象模型库;进程安全属性初始化模块,用以初始化组件对象模型进程安全属性;实例创建模块,用以创建丽I实例;连接模块,用以连接到本地;代理安全级别设置模块,用以设置代理安全级别;异步查询模块,用以执行异步查询并接收事件通知。本发明的有益效果在于本发明提出的基于事件驱动实时获取系统中进程信息的 方法及系统,基于事件驱动的进程快照方法只在特定事件发生时进行处理,可以大大减小 CPU占有率。同时,本发明可以很好的解决受第三方软件保护的进程在事件发生瞬间不能获 得其信息的问题。
图1为本发明进程信息获取方法的流程图。
具体实施例方式下面结合附图详细说明本发明的优选实施例。实施例一本发明揭示了一种基于事件驱动的进程快照,实时获取系统中正在打开或关闭的 进程信息的方法。请参阅图1,本发明基于事件驱动实时获取系统中进程信息的方法包括如下步 骤步骤Si、调用 CoInitializeEx 初始化 COM 库;步骤S2、调用Cohitializekcurity初始化COM进程安全属性;步骤S3、调用 CoCreatehstance 创建 WMI 实例;步骤S4、调用Connectkrver连接到本地root\cimv2名字空间(本地命名空 间);步骤S5、调用CoktProxyBlanket设置代理安全级别;步骤S6、执行异步查询并接收事件通知;步骤S7、通过WMI技术获取初始进程列表及进程相关信息,设置进程状态信息,状 态信息包括打开状态、存在状态、关闭状态;生成初始进程列表缓存;步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并通过丽I技术获 取进程列表;与初始进程列表缓存进行比较,设置状态信息,状态信息包括打开状态、存在 状态、关闭状态;更新初始进程列表缓存;
步骤S9、输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。实施例二本实施例中,本发明基于事件驱动实时获取系统中进程信息的方法包括如下步 骤步骤S7、获取进程信息,生成初始进程列表并缓存。本实施例中,可通过WMI技术 获取进程信息,生成初始进程列表并缓存。步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表; 与初始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表并缓存。其中,获取 进程列表的方法可以通过WMI技术获取。步骤S9、输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。优选地,所述方法在步骤S7之前还包括步骤Sl、初始化组件对象模型库(COM库);步骤S2、初始化组件对象模型COM进程安全属性;步骤S3、创建丽I实例;步骤S4、连接到本地;步骤S5、设置代理安全级别;步骤S6、执行异步查询并接收事件通知。以上介绍了本发明基于事件驱动实时获取系统中进程信息的方法,本发明在揭示 上述方法的同时,还揭示一种基于事件驱动实时获取系统中进程信息的系统,所述系统包 括初始进程列表生成模块、初始进程列表更新模块、进程信息输出模块。初始进程列表生成模块用以获取进程信息,生成初始进程列表并缓存。初始进程列表更新模块用以在打开或关闭进程事件发生时,响应打开和关闭事件 并获取进程列表;与初始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表并 缓存。进程信息输出模块用以输出初始进程列表缓存中状态信息标志为打开或关闭的 进程信息。优选地,所述进一步系统包括组件对象模型库初始化模块、进程安全属性初始化 模块、实例创建模块、连接模块、代理安全级别设置模块、异步查询模块。所述组件对象模型库初始化模块用以初始化组件对象模型库。在Windows系统 中,可通过调用CoInitializeEx初始化COM库。所述进程安全属性初始化模块用以初始化组件对象模型进程安全属性。在 Windows系统中,可通过调用Cc^nitializekcurity初始化COM进程安全属性。所述实例创建模块用以创建丽I实例。在Windows系统中,可通过调用 CoCreateInstance ^iJM WMI 歹Ij0所述连接模块用以连接到本地。在Windows系统中,可通过调用Cormectkrver 连接到本地root\cimv2名字空间。所述代理安全级别设置模块用以设置代理安全级别。在Windows系统中,可通过 调用CoktProxyBlanket设置代理安全级别。所述异步查询模块用以执行异步查询并接收事件通知。
综上所述,本发明提出的基于事件驱动实时获取系统中进程信息的方法及系统, 基于事件驱动的进程快照方法只在特定事件发生时进行处理,可以大大减小CPU占有率。 同时,本发明可以很好的解决受第三方软件保护的进程在事件发生瞬间不能获得其信息的 问题。这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例 中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实 施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明 的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、 材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进 行其它变形和改变。
权利要求
1.一种基于事件驱动实时获取系统中进程信息的方法,其特征在于,所述方法包括如 下步骤步骤Si、调用CoInitializeEx初始化COM库;步骤S2、调用Cc^nitializekcurity初始化COM进程安全属性;步骤S3、调用CoCreatehstance创建WMI实例;步骤S4、调用ConnectServer连接到本地命名空间;步骤S5、调用CoktProxyBlanket设置代理安全级别;步骤S6、执行异步查询并接收事件通知;步骤S7、通过WMI技术获取初始进程列表及进程相关信息,设置状态信息,状态信息包 括打开状态、存在状态、关闭状态;生成初始进程列表缓存;步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并通过丽I技术获取进 程列表;与初始进程列表缓存进行比较,设置状态信息,状态信息包括打开状态、存在状态、 关闭状态;更新初始进程列表缓存;步骤S9、输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。
2.一种基于事件驱动实时获取系统中进程信息的方法,其特征在于,所述方法包括如 下步骤步骤S7、设置事件通知的方式获取进程信息,生成初始进程列表并缓存; 步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初 始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表缓存;步骤S9、输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。
3.根据权利要求2所述的基于事件驱动实时获取系统中进程信息的方法,其特征在于所述方法在步骤S7之前还包括步骤Si、初始化组件对象模型库;步骤S2、初始化组件对象模型进程安全属性;步骤S3、创建丽I实例;步骤S4、连接到本地;步骤S5、设置代理安全级别;步骤S6、执行异步查询并接收事件通知。
4.根据权利要求2所述的基于事件驱动实时获取系统中进程信息的方法,其特征在于步骤S7中、通过WMI技术获取进程信息,生成初始进程列表并缓存。
5.根据权利要求2所述的基于事件驱动实时获取系统中进程信息的方法,其特征在于步骤S8中、当打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取 进程列表。
6.一种基于事件驱动实时获取系统中进程信息的系统,其特征在于,所述系统包括 初始进程列表生成模块,用以获取进程信息,生成初始进程列表并缓存;初始进程列表更新模块,用以在打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置状态信息,更新初始进程列表并缓存;进程信息输出模块,用以输出初始进程列表缓存中状态信息标志为打开或关闭的进程 fn息ο
7.根据权利要求6所述的基于事件驱动实时获取系统中进程信息的系统,其特征在于所述初始进程列表生成模块通过WMI技术获取进程信息,生成初始进程列表并缓存。
8.根据权利要求6所述的基于事件驱动实时获取系统中进程信息的系统,其特征在于所述初始进程列表更新模块在打开或关闭进程事件发生时,响应打开和关闭事件并通 过WMI技术获取进程列表。
9.根据权利要求6所述的基于事件驱动实时获取系统中进程信息的系统,其特征在于所述进一步系统包括组件对象模型库初始化模块,用以初始化组件对象模型库;进程安全属性初始化模块,用以初始化组件对象模型进程安全属性;实例创建模块,用以创建WMI实例;连接模块,用以连接到本地;代理安全级别设置模块,用以设置代理安全级别;异步查询模块,用以执行异步查询并接收事件通知。
全文摘要
本发明揭示了一种基于事件驱动实时获取系统中进程信息的方法及系统,所述方法包括获取初始进程列表及进程相关信息,设置状态信息,生成初始进程列表缓存;当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置状态信息,更新初始进程列表缓存;输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。本发明提出的基于事件驱动实时获取系统中进程信息的方法及系统,基于事件驱动的进程快照方法只在特定事件发生时进行处理,可以大大减小CPU占有率。同时,本发明可以很好的解决受第三方软件保护的进程在事件发生瞬间不能获得其信息的问题。
文档编号G06F11/32GK102096622SQ20101060053
公开日2011年6月15日 申请日期2010年12月21日 优先权日2010年12月21日
发明者于辉, 周海波, 崔永鑫, 张嘉锐, 张国强 申请人:上海讯实网络科技有限公司