一种进行深度清理和更新的方法及装置制造方法

文档序号:6639062阅读:292来源:国知局
一种进行深度清理和更新的方法及装置制造方法
【专利摘要】本发明公开了一种进行深度清理和更新的方法及装置,其中:获取操作系统当前使用的系统文件以及更新软件;系统文件包括:组件、驱动程序;清除操作系统中当前未使用的系统文件;将更新软件进行固化更新处理。本发明的进行深度清理和更新的方法及装置,能够对驱动、组件等系统文件进行清理并能进行软件升级包的固化更新,能够使系统运行稳定,可大大减少冗余的驱动和组件对存储空间的占用,释放更多的存储空间,提高性能以及用户体验度。
【专利说明】一种进行深度清理和更新的方法及装置

【技术领域】
[0001] 本发明涉及计算机【技术领域】,尤其涉及一种进行深度清理和更新的方法及装置。

【背景技术】
[0002] 随着技术的发展,在日常生活中对电脑、手机等终端越来越依赖,对电脑的运行速 度的要求也越来越高。在使用一端时间后,电脑会产生大量的垃圾文件,会占用系统大量的 内存以及硬盘的存储空间,在运行中会影响操作速度,影响用户的正常使用。为了能有效地 提高运行速度,需要对电脑中的垃圾文件进行清理,释放更多的存储空间。
[0003] 目前,垃圾文件的清理通常是通过扫描系统和常用的软件来识别垃圾软件,并进 行清理的。通常,系统中安装有多个驱动程序,对于一个硬件可能安装有多个版本、公司的 驱动程序,例如,网卡驱动、USB驱动等等,但通常一个硬件设备只与一个驱动程序绑定。当 一个硬件设备安装有多个驱动时,会浪费大量的存储空间,影响电脑的性能。并且,在对组 件进行升级的过程中,会下载各种应用程序的安装包进行安装,因此,会积累大量的不同版 本的组件。但是,目前的垃圾文件的清理技术,仅仅能够清理一般的软件,对于系统软件,例 如,驱动程序、组件等则无法进行清理。并且,当有软件更新时,对软件升级包不能进行固化 更新处理。


【发明内容】

[0004] 有鉴于此,本发明要解决的一个技术问题是提供一种进行深度清理和更新的方 法,能够对驱动、组件等系统文件进行清理并能进行升级包的固化更新。
[0005] -种进行深度清理和更新的方法,其中:获取操作系统当前使用的系统文件以及 更新软件;所述系统文件包括:组件、驱动程序;清除所述操作系统当前未使用的所述系统 文件;将所述更新软件进行固化更新处理。
[0006] 根据本发明的一个实施例,进一步的,所述清除所述操作系统当前未使用的所述 系统文件包括:调用DriverPackageUninstall函数删除当前未与硬件设备绑定的全部驱 动程序。
[0007] 根据本发明的一个实施例,进一步的,从所述操作系统的注册表中获取对于硬件 设备安装的全部驱动程序信息,包括:键值、驱动安装目录;从所述操作系统的设备管理器 中获取与硬件设备当前绑定的驱动程序信息。
[0008] 根据本发明的一个实施例,进一步的,所述清除所述操作系统当前未使用的所述 系统文件包括:调用IDismPackageManager接口的GetPackageCollection方法,获取操作 系统中全部组件的更新信息;调用IDismPackage接口的Remove方法,清除所述操作系统当 前未使用的组件。
[0009] 根据本发明的一个实施例,进一步的,所述将所述更新软件进行固化更新处理包 括:所述更新软件包括:SP补丁包;调用IDismServicePackScavenge接口的SPScavenge方 法,固化所述SP补丁包。
[0010] 根据本发明的一个实施例,进一步的,在进行深度清理和更新的提示界面中,针对 的驱动类型分别显示清除所述操作系统当前未使用的驱动空间容量;所述驱动类型包括: 打印驱动、显卡驱动、网卡驱动;根据接收到的深度更新操作指令中的驱动类型,清除所述 操作系统与此驱动类型对应的、当前未使用的驱动程序。
[0011] 根据本发明的一个实施例,进一步的,所述操作系统包括:WIND0WS VISTA、 WIND0WS7、WIND0WS8。
[0012] 本发明要解决的一个技术问题是提供一种进行深度清理和更新的抓装置,能够对 驱动、组件等系统文件进行清理并能进行升级包的固化更新。
[0013] 一种进行深度清理和更新的装置,包括:文件获取单元,用于获取操作系统当前使 用的系统文件以及更新软件;所述系统文件包括:组件、驱动程序;清除单元,用于清除所 述操作系统当前未使用的所述系统文件;更新单元,用于将所述更新软件进行固化更新处 理。
[0014] 根据本发明的一个实施例,进一步的,所述清除单元,包括:驱动清除子模块,调用 DriverPackageUninstall函数删除当前未与硬件设备绑定的全部驱动程序。
[0015] 根据本发明的一个实施例,进一步的,所述驱动清除子模块,用于根据接收到的深 度更新操作指令中的驱动类型,清除所述操作系统与此驱动类型对应的、当前未使用的驱 动程序;所述驱动类型包括:打印驱动、显卡驱动、网卡驱动;
[0016] 根据本发明的一个实施例,进一步的,所述清除单元,包括:驱动获取子模块,用于 从所述操作系统的注册表中获取对于硬件设备安装的全部驱动程序信息,包括:键值、驱动 安装目录;从所述操作系统的设备管理器中获取与硬件设备当前绑定的驱动程序信息。
[0017] 根据本发明的一个实施例,进一步的,所述清除单元,包括:组件清除子模块,用于 调用IDismPackageManager接口的GetPackageCollection方法,获取操作系统中全部组件 的更新信息;调用IDismPackage接口的Remove方法,清除所述操作系统当前未使用的组 件。
[0018] 根据本发明的一个实施例,进一步的,所述更新软件包括:SP补丁包;所述更新单 元,用于调用IDismServicePackScavenge接口的SPScavenge方法,固化所述SP补丁包。 [0019] 本发明的进行深度清理和更新的方法及装置,能够对驱动、组件等系统文件进行 清理并能进行软件升级包的固化更新,能够使系统运行稳定,可大大减少冗余的驱动和组 件对存储空间的占用,释放更多的存储空间,提高性能以及用户体验度。

【专利附图】

【附图说明】
[0020] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是 本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还 可以根据这些附图获得其他的附图。
[0021] 图1为根据本发明的进行深度清理和更新的方法的一个实施例的流程图;
[0022] 图2为根据本发明的进行深度清理和更新的方法的另一个实施例的流程图;
[0023] 图3为根据本发明的进行深度清理和更新的装置的一个实施例的结构示意图;
[0024] 图4为根据本发明的进行深度清理和更新的装置的一个实施例的清除单元的示 意图;
[0025] 图5、图6和图7为进行深度清理和更新的界面示意图。

【具体实施方式】
[0026] 下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下 面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显 然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实 施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属 于本发明保护的范围。
[0027] 图1为根据本发明的进行深度清理和更新的方法的一个实施例的流程图,如图1 所示:
[0028] 步骤101,获取操作系统当前使用的系统文件以及更新软件;系统文件包括:组 件、驱动程序等。
[0029] 步骤102,清除操作系统当前未使用的系统文件。
[0030] 步骤103,将更新软件进行固化更新处理。
[0031] 固化更新是指安装软件更新包,替换相应的旧版本软件,并对注册表等进行操作, 使系统再次调用此软件时,使用更新后的程序。例如,微软为WIDD0WS提供的SP更新软件 包等等。
[0032] 本发明的进行深度清理和更新的方法,能够对驱动和组件等系统文件进行垃圾清 除,对更新软件进行固化更新处理,能够大大减少冗余的驱动和组件对存储空间的占用,释 放更多的存储空间,提高性能以及用户体验度。
[0033] Windows注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套 数据文件,保存了驱动信息、软件安装信息、软件版本号和日期,序列号等。注册表控制所有 32位应用程序和驱动,数据被分割成多层次的键和子键,建立分层次结构更易于编辑。每个 键有成组的信息而且根据在其中的数据类型被命名。
[0034] 所有软件、硬件、windows工作的设置都存放在HKEY_LOCAL_MACHINE键下,HKEY_ L0CAL_MACHINE是一个显示控制系统和软件的处理键,它包括网络和硬件上所有的软件设 置,例如,文件的位置,注册和未注册的状态,版本号等等。HKEY_LOCAL_MACHINE的子键包 括:Enum、Root、HARDWARE、SOFTWARE 等等。可以通过调用系统 API,例如 RegOpenKeyExO (打开注册表项)、RegQueryValueEx ()(取值)、RegCloseKey ()(关闭注册表项)等等,对 注册表进行操作。
[0035] 在一个实施例中,可以调用RegQueryValueExO,从操作系统的注册表中获取对于 硬件设备安装的全部驱动程序信息,包括:键值、驱动程序安装目录等。可以从操作系统的 设备管理器中获取与硬件设备当前绑定的驱动程序信息。
[0036] 在一个实施例中,link文件即为link或hard link,也称为硬链接。删除当前未与 硬件设备绑定的全部驱动程序,可以采用直接删除的方式,调用DriverPackageUninstall 函数(系统提供的API函数),删除当前未与硬件设备绑定的全部驱动程序,也可以生成指 向当前与硬件设备绑定的驱动程序的link文件,将此link文件分别存储在被删除的当前 未与硬件设备绑定的全部驱动程序的安装目录中。
[0037] 下面是一个调用DriverPackageUninstall删除驱动程序的例子:
[0038] BOOL NeedReboot ;
[0039] thr = DriverPackageUninstall(DriverPath, DRIVER_PACKAGE_DELETE_ FILES, NULL, &NeedReboot);
[0040] 能够将指定安装目录下的驱动程序删除。
[0041] 由于驱动程序被删除后,在系统的调用中可能会出现异常,因此,生成当前与硬件 设备绑定的驱动程序的link文件,或者其它程序的link文件,将此link文件分别存储在 被删除的当前未与硬件设备绑定的全部驱动程序的安装目录中。由于link文件较小,并且 替换掉被删除的驱动,既能够释放空间,又能够保证系统稳定运行。
[0042] Windows提供更新包管理接口 IDismPackageManager,主要用于获取更新信息,以 及提交状态更改。IDismPackageManager接口的部分定义如下:
[0043] MIDL_INTERFACEri754aa4f-f0e2-4692-a802-d51871085f34//)
[0044] IDismPackageManager:IDispatch
[0045] {
[0046] virtual HRESULT-stdcall get-IsCompressionEnabled(
[0047] /*[out,retval]*/VARIANT-B00L*pVal) = 0 ;
[0048] virtual HRESULT-stdcall get-IsImageUnserviceable (
[0049] /*[out,retval]*/VARIANT-B00L*pVal) = 0 ;
[0050] virtual HRESULT-stdcall OpenPackageByPath(
[0051] /*[in]*/BSTR PackageLocation,
[0052] /*[out,retval]*/struct IDismPackage**Package) = 0 ;
[0053] virtual HRESULT-stdcall OpenPackageByName(
[0054] /* [in] */BSTR PackageName,
[0055] /^ [out,retval]struct IDismPackage木木Package) = 0 ;
[0056] virtual HRESULT-stdcall OpenFoundationPackage(
[0057] /^[out, retval]struct IDismPackage木木Package) = 0 ;
[0058] virtual HRESULT_stdcall OpenMsuPackage(
[0059] /*[in]*/BSTR PackageLocation,
[0060] /*[out,retval]*/struct IDismMsuPackage**Package) = 0 ;
[0061] virtual HRESULT-stdcall OpenPublicFeature (
[0062] /* [in] */BSTR FeatureName,
[0063] /^ [out, retval] struct IDismPackageFeature木木Feature) = 0;
[0064] //获取所有更新信息
[0065] virtual HRESULT_stdcall GetPackageCollection(
[0066] /*[out,retval]*/struct IDismPackageCollection**ppPackages) = 0 ;
[0067] virtual HRESULT-stdcall GetPublicFeatureCollection(
[0068] /*[out,retval]*/struct IDismPackageFeatureCollection**
[0069] ppPackageFeatures) = 0 ;
[0070] //提交更改,让所有操作生效
[0071] virtual HRESULT-stdcall ProcessChanges () = 0 ;
[0072] virtual HRESULT-stdcall ProcessChangesWithOptions (
[0073] /*[in]*/unsigned int Options) = 0 ;
[0074] virtual HRESULT-stdcall ProcessChangesPostReboot () = 0;
[0075] virtual HRESULT-stdcall Scavenge () = 0 ;
[0076] virtual HRESULT_stdcall RevertPendingActions() = 0 ;
[0077] };
[0078] 在一个实施例中,从操作系统注册表中获取安装的全部组件信息,调用 IDismPackageManager接口的GetPackageCollection方法,获取操作系统中全部组件的更 新信息。
[0079] 例如:CComQIPtr〈IDismPackageCollection>pIDismPackageCollection ;
[0080] IDismPackageManager^pIDismPackageManager ;
[0081] HRESULT hr = pIDismPackageManager-
[0082] >GetPackageCollection(&pIDismPackageCollection)〇
[0083] Windows提供IDismPackage接口,用于获取更新信息以及添加删除更新。 IDismPackage接口的部分定义如下:
[0084] IDismPackage:IDispatch
[0085] {
[0086] //virtual HRESULT-stdcall get-Identity(
[0087] /*[out,retval]*/BSTR*pVal) = 0 ;
[0088] virtual HRESULT_stdcall get-ReleaseType(
[0089] /*[out,retval]*/BSTR*pVal) = 0 ;
[0090] //获取驱动状态
[0091] virtual HRESULT-stdcall get-State (
[0092] /*[out,retval]*/DISM-INSTALL-STATE*pVal) = 0 ;
[0093] virtual HRESULT-stdcall Install () = 0 ;
[0094] //删除该更新
[0095] virtual HRESULT-stdcall Remove () = 0 ;
[0096] virtual HRESULT-stdcall Stage () = 0 ;
[0097] } 0
[0098] 可以调用IDismPackage接口的Remove方法,清除操作系统未使用的组件。提供 IDismPackage 等接 口的操作系统包括:WINDOWS VISTA、WIND0WS7、WIND0WS8 等等。
[0099] 例如,定义一个 IDismPackageManager 接 口对象,通过 GetPackageCollection 方 法获取操作系统中全部组件的所有组件信息,并根据返回的结果集判断组件是否被使用。
[0100] 定义一个IDismPackage接口对象,当判断组件未使用时,则调用Remove方法删 除,当删除后,调用IDismPackageManager接口的ProcessChanges方法,通知系统组件已发 生更新,具体实现如下:
[0101]

【权利要求】
1. 一种进行深度清理和更新的方法,其中: 获取操作系统当前使用的系统文件以及更新软件;所述系统文件包括:组件、驱动程 序; 清除所述操作系统中当前未使用的所述系统文件; 将所述更新软件进行固化更新处理。
2. 如权利要求1所述的方法,其特征在于,所述清除所述操作系统当前未使用的所述 系统文件包括: 调用DriverPackageUnins tall函数删除当前未与硬件设备绑定的全部驱动程序。 从所述操作系统的注册表中获取对于硬件设备安装的全部驱动程序信息,包括:键值、 驱动安装目录; 从所述操作系统的设备管理器中获取与硬件设备当前绑定的驱动程序信息。
3. 如权利要求1所述的方法,其特征在于,所述清除所述操作系统当前未使用的所述 系统文件包括: 调用IDismPackageManager接口的GetPackageCollection方法,获取操作系统中全部 组件的更新信息; 调用IDismPackage接口的Remove方法,清除所述操作系统当前未使用的组件。
4. 如权利要求2所述的方法,其特征在于,所述将所述更新软件进行固化更新处理包 括: 所述更新软件包括:SP补丁包; 调用 IDismServicePackScavenge 接口的 SPScavenge 方法,固化所述 SP 补丁包。
5. 如权利要求1所述的方法,其特征在于: 在进行深度清理和更新的提示界面中,针对的驱动类型分别显示清除所述操作系统当 前未使用的驱动空间容量;所述驱动类型包括:打印驱动、显卡驱动、网卡驱动; 根据接收到的深度更新操作指令中的驱动类型,清除所述操作系统与此驱动类型对 应的、当前未使用的驱动程序; 所述操作系统包括:WINDOWS VISTA、WIND0WS7、WIND0WS8。
6. -种进行深度清理和更新的装置,其特征在于,包括: 文件获取单元,用于获取操作系统当前使用的系统文件以及更新软件;所述系统文件 包括:组件、驱动程序; 清除单元,用于清除所述操作系统当前未使用的所述系统文件; 更新单元,用于将所述更新软件进行固化更新处理。
7. 如权利要求7所述的装置,其特征在于: 所述清除单元,包括: 驱动清除子模块,用于调用DriverPackageUninsta 11函数删除当前未与硬件设备绑 定的全部驱动程序; 所述驱动类型包括:打印驱动、显卡驱动、网卡驱动。
8. 如权利要求7所述的装置,其特征在于: 所述清除单元,包括: 驱动获取子模块,用于从所述操作系统的注册表中获取对于硬件设备安装的全部驱动 程序信息,包括:键值、驱动安装目录;从所述操作系统的设备管理器中获取与硬件设备当 前绑定的驱动程序信息。
9. 如权利要求6所述的装置,其特征在于: 所述清除单元,包括: 组件清除子模块,用于调用IDismPackageManager接口的GetPackageCollection方 法,获取操作系统中全部组件的更新信息;调用IDismPackage接口的Remove方法,清除所 述操作系统当前未使用的组件。
10. 如权利要求6所述的装置,其特征在于: 所述更新软件包括:SP补丁包; 所述更新单元,用于调用IDismServicePackScavenge接口的SPScavenge方法,固化所 述SP补丁包。
【文档编号】G06F9/445GK104407905SQ201410784223
【公开日】2015年3月11日 申请日期:2014年12月16日 优先权日:2014年12月16日
【发明者】徐鹏捷, 陈雄 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1