CN107122204B - 应用的卸载状态检测方法及装置 - Google Patents
应用的卸载状态检测方法及装置 Download PDFInfo
- Publication number
- CN107122204B CN107122204B CN201710198198.2A CN201710198198A CN107122204B CN 107122204 B CN107122204 B CN 107122204B CN 201710198198 A CN201710198198 A CN 201710198198A CN 107122204 B CN107122204 B CN 107122204B
- Authority
- CN
- China
- Prior art keywords
- application
- uninstalled
- uninstalling
- kernel object
- specified
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/62—Uninstallation
Abstract
本发明公开了一种应用的卸载状态检测方法及装置,属于软件技术领域。所述方法包括:获取针对待卸载应用的启动卸载指令,响应所述启动卸载指令,创建所述待卸载应用的卸载进程;创建与所述待卸载应用匹配的指定内核对象;建立所述卸载进程与所述指定内核对象之间的关联关系,以使所述指定内核对象对所述卸载进程以及所述卸载进程在执行卸载过程中创建的全部子进程进行监控,所述指定内核对象中包含所述卸载进程以及所述全部子进程;根据所述指定内核对象中进程的运行情况,确定所述待卸载应用的卸载状态。本发明提供的检测方法由于可对卸载流程中的一系列进程全部进行监控,因此大大降低了误判现象的发生,提升了检测精度。
Description
技术领域
本发明涉及软件技术领域,特别涉及一种应用的卸载状态检测方法及装置。
背景技术
在终端安装的大量应用中,一般总是会存在诸如占用大量系统空间、使用频率较低、随其他应用捆绑下载的这类特殊应用。针对这类特殊应用,为了提升终端的运行速度,大部分用户会选择将其卸载掉。而在对一个应用启动卸载流程后,终端通常会不时对其卸载状态进行检测,以确定该应用是否卸载完成。
相关技术在检测应用的卸载状态时,主要采取下述方式实现:终端通过注册表查找待卸载应用的卸载程序;之后,运行该卸载程序以启动卸载进程,从而进入待卸载应用的卸载流程。接下来,终端等待该卸载进程运行结束,该卸载进程运行结束则表明待卸载应用卸载完成,否则,则表明仍处于卸载过程中。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
针对一些应用来说,有时在卸载过程中卸载进程还会创建一系列的子进程,而上述检测方法仅在卸载进程运行结束的情况下便确定为应用卸载完成,所以在某些情况下会存在误判的现象,上述检测方法存在精准度较差的缺陷。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种应用的卸载状态检测方法及装置。所述技术方案如下:
第一方面,提供了一种应用的卸载状态检测方法,所述方法包括:
获取针对待卸载应用的启动卸载指令,响应所述启动卸载指令,创建所述待卸载应用的卸载进程;
创建与所述待卸载应用匹配的指定内核对象;
建立所述卸载进程与所述指定内核对象之间的关联关系,以使所述指定内核对象对所述卸载进程以及所述卸载进程在执行卸载过程中创建的全部子进程进行监控,所述指定内核对象中包含所述卸载进程以及所述全部子进程;
根据所述指定内核对象中进程的运行情况,确定所述待卸载应用的卸载状态。
第二方面,提供了一种应用的卸载状态检测装置,所述装置包括:
第一创建模块,用于获取针对待卸载应用的启动卸载指令,响应所述启动卸载指令,创建所述待卸载应用的卸载进程;
第二创建模块,用于创建与所述待卸载应用匹配的指定内核对象;
建立模块,用于建立所述卸载进程与所述指定内核对象之间的关联关系,以使所述指定内核对象对所述卸载进程以及所述卸载进程在执行卸载过程中创建的全部子进程进行监控,所述指定内核对象中包含所述卸载进程以及所述全部子进程;
确定模块,根据所述指定内核对象中进程的运行情况,确定所述待卸载应用的卸载状态。
本发明实施例提供的技术方案带来的有益效果是:
终端在获取以及响应针对待卸载应用的启动卸载指令,并创建待卸载应用的卸载进程后,还会创建与待卸载应用匹配的指定内核对象,进而建立卸载进程与指定内核对象之间的关联关系,实现该指定内核对象中包含该卸载进程以及卸载进程在执行卸载过程中创建的全部子进程,以达到对该卸载进程以及全部子进程进行监控的目的,这样终端便可根据指定内核对象中各个进程的运行情况,来确定待卸载应用的卸载状态。该种卸载状态的检测方法由于可对卸载流程中的一系列进程全部进行监控,因此大大降低了误判现象的发生,提升了卸载状态的检测精度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种应用的卸载状态检测方法的流程图;
图2是本发明实施例提供的一种关联关系的建立示意图;
图3是本发明实施例提供的一种检测应用卸载状态的流程示意图;
图4是本发明实施例提供的一种应用的卸载状态检测装置的结构示意图;
图5是本发明实施例提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细地解释说明之前,先对本发明实施例涉及到的一些名词进行解释说明,以及对本发明实施例提供的一种应用的卸载状态检测方法的实施场景进行简单介绍。
Job(工作):在本发明实施例中指代的是Windows操作系统提供的一种内核对象。Job内核对象可以对一个进程集合施加一些全局限制,以达到一些特殊效果。此外,Job内核对象还可以控制诸如最大CPU(Central Processing Unit,中央处理器)使用率、最大内存分配、最大WorkingSet(工作集)、最大并发进程数、总运行时间等等。
在本发明实施例中,主要运用Job内核对象对一个进程集合施加全局限制的这一特性。详细来说,Job内核对象允许将进程组合在一起并创建一个沙箱,以此来对进程增加一些限制,比如限制进程可以做什么,并监控进程的生命周期。其中,对进程的限制可包括进程最多能够使用的内存,能否访问到Job内核对象外的用户对象,能否退出Windows,能否访问剪切板等等。
此外,本发明实施例提供的应用的卸载状态检测方法,可应用在任何安装有Windows操作系统的终端上。在本发明实施例中,为了在某一应用卸载过程中可以精准地检测该应用的卸载状态,引入了Windows操作系统提供的Job机制,使用Job内核对象实现对卸载过程中一系列的进程(如父进程和子进程)进行监控,由于本发明实施例可对整个应用卸载过程中涉及到的全部进程均进行监控,因此不会出现前文中提及的仅基于卸载进程进行卸载状态检测时出现的误判现象,提升了检测的精确度。
进一步地,有一些应用的卸载过程中,会存在实际上已经卸载完成,但卸载过程中涉及到的上述一些进程由于bug(小错误)或网络上报等原因迟迟不结束的情况,从而造成终端确定卸载过程还在继续执行的假象。对于这种情况,终端不但会针对浏览器进程这一特殊进程进行特殊处理,还会结合对该应用的注册表信息和安装目录等的监控结果,来判断该应用是否已经卸载完成。更为具体的描述请参见下述实施例。
图1是本发明实施例提供的一种应用的卸载状态检测方法的流程图。参见图1,本发明实施例提供的方法流程包括:
101、获取针对待卸载应用的启动卸载指令,响应启动卸载指令,创建待卸载应用的卸载进程。
其中,待卸载应用可为终端上已安装的任一应用。若终端获取到用户对一个应用的启动卸载操作,则该应用便称之为待卸载应用,启动对该应用的卸载流程。而在启动该应用的卸载流程后,首先必须要做的便是创建这一待卸载应用的卸载进程。在本发明实施例中,通常可通过下述三种途径,来启动一个应用的卸载流程,完成卸载进程的创建。
方式一、在通过控制面板显示的已安装应用列表中,获取针对待卸载应用的选中指令,响应该选中指令,运行待卸载应用的卸载程序,以创建卸载进程。
针对方式一,终端在获取到用户执行的对控制面板中诸如“程序和功能”图标的选中操作后,通过控制面板对自身的已安装应用列表进行显示。其中,已安装应用列表中包括了终端自身的全部已安装应用。若终端获取到用户对已安装应用列表中某一应用的选中指令,即终端获取到用户对该应用的选中操作,则响应该选中指令,将这个应用作为待卸载应用,并运行这个待卸载应用的卸载程序,从而完成这个待卸载应用的卸载进程的创建。
其中,这个待卸载应用的卸载程序可通过该待卸载应用的注册表信息来获取其存储位置,进而在该存储位置下查询该卸载程序并运行。或者,如果这个待卸载应用的卸载程序是在应用运行过程中释放出来的,则还可在temp目录下查询该卸载程序并运行。其中,上述存储位置通常指代待卸载应用的安装目录下某个存储位置。
方式二、在待卸载应用的安装目录下,查找待卸载应用的卸载程序,接收针对卸载程序的启动运行指令,响应该启动运行指令,运行卸载程序,以创建卸载进程。
针对方式二,卸载程序一般都具有固定的名称,通常为Uninst.exe。因此,终端还可以直接在该卸载应用的安装目录下查找该卸载程序。若终端获取到用户对该卸载程序执行的双击操作,即获取到针对该卸载程序的启动运行指令,则响应该启动运行指令,运行该卸载程序,从而完成这个待卸载应用的卸载进程的创建。
方式三、在通过第三方卸载应用显示的已安装应用列表中,获取针对待卸载应用的选中指令,响应该选中指令,创建卸载进程。
针对方式三,除了上述两种卸载方式外,还可以通过第三方卸载应用来完成对某一应用的卸载。与方式一类似,当终端在获取到用户执行的对第三方卸载应用的主界面中诸如“卸载”或“应用管理”等图标的选中操作后,通过第三方卸载应用对终端自身的已安装应用列表进行显示。同样,已安装应用列表中包括了终端自身的全部已安装应用。接下来,若终端获取到用户对已安装应用列表中某一应用的选中指令,即获取到用户对该应用的选中操作,则响应该选中指令,将这个应用作为待卸载应用,并对这个待卸载应用的卸载进程进行创建。
综上所述,上述启动卸载指令既可以指代上述方式一和方式三中对某一应用的选中操作,还可以指代上述方式二中对卸载程序的启动运行指令,无论是哪一种方式,在接收到启动卸载指令后,均对该启动卸载指令进行响应,以创建待卸载应用的卸载进程。
102、创建与待卸载应用匹配的指定内核对象,建立卸载进程与指定内核对象之间的关联关系,以使指定内核对象对卸载进程以及卸载进程在执行卸载过程中创建的全部子进程进行监控,指定内核对象中包含卸载进程以及创建的全部子进程。
在本发明实施例中,在待卸载应用的卸载进程启动后,终端便进入指定内核对象的创建步骤。其中,本发明实施例提及的指定内核对象便为前文所述的Job内核对象。在创建指定内核对象时,可采取下述方式实现:调用Windows操作系统提供的创建工作函数CreateJobObject,进行指定内核对象的创建。
详细地,比如可通过HANDLE CreateJobObject(
PSECURITY_ATTRIBUTES psa,
PCTSTR pszName);
来创建。其中,最后一个参数用于对该指定内核对象进行命名,比如使其能够通过OpenJobObject函数进行访问。需要说明的是,在对该指定内核对象进行命名时,为了防止该指定内核对象同其他Job内核对象冲突,可以将该指定内核对象的名称设置为与该待卸载应用的名称一致。
在创建好指定内核对象后,接着便可以建立一个沙箱来对卸载过程中涉及到的一系列进程施加限制。即,参见图2,终端会建立待卸载应用的卸载进程与指定内核对象之间的关联关系。其中,建立卸载进程与指定内核对象之间的关联关系,包括但不限于:调用Windows操作系统提供的进程与工作关联函数AssignToProcessToJob,建立该卸载进程与指定内核对象之间的关联关系。
详细地,比如可通过BOOL AssignToProcessToJob(
HANDLE hJob
HANDLE hProcess)
来建立。其中,这个AssignToProcessToJob函数向Windows操作系统表明将此进程作为指定内核对象的一部分。需要说明的是,这个AssignToProcessToJob函数仅允许将未分配给任何Job内核对象的进程分配给指定内核对象。一旦一个进程已经分配给其他Job内核对象,那么这个进程就不可以再分配给该指定内核对象。
而在通过AssignToProcessToJob函数将该卸载进程与指定内核对象关联后,该卸载进程后续在卸载过程中创建的任何子进程均会在这个指定内核对象中存在。这样终端便可监控整个与待卸载应用有关的进程链的生命周期和行为表现。换句话说,建立关联关系的目的是,使得指定内核对象对卸载进程以及卸载进程在执行卸载过程中创建的全部子进程进行监控。即,该指定内核对象中会出现该卸载进程以及该卸载进程在执行卸载过程中创建的全部子进程。需要说明的是,在卸载过程中,如果卸载进程和创建的子进程中有结束运行的进程,那么指定内核对象中便不会再包括这个进程。即,在卸载过程中,指定内核对象中虽然会包括卸载进程和全部子进程,但是在随着卸载进程和全部子进程中某些进程的运行结束,这些进程便不会继续存在于指定内核对象。即,指定内核对象实质上包括的是卸载进程和全部子进程中未结束运行的进程。
103、根据指定内核对象中进程的运行情况,确定待卸载应用的卸载状态。
在本发明实施例中,根据指定内核对象中进程的运行情况,来确定待卸载应用的卸载状态时,主要分为下述三种情况:
情况一、如果指定内核对象中卸载进程以及全部子进程均运行结束,即指定内核对象中已没有任何进程存在,则确定待卸载应用已卸载完成。
在本发明实施例中,终端会周期性地检测指定内核对象中是否还有进程存在。其中,终端进行检测的时间间隔可为1秒或2秒等等,本发明实施例对此不进行具体限定。在本发明实施例中,理论上来说,如果指定内核对象中已经没有任何进程存在了,则表明待卸载应用已经卸载完毕。
情况二、如果指定内核对象中仅有指定进程未运行结束,即指定内核对象中仅有指定进程存在,则确定待卸载应用已卸载完成。
其中,指定进程指代用于对待卸载应用的卸载原因信息进行收集的进程,且指定进程为卸载进程在卸载过程中创建的一个子进程。即,在实际操作过程中,有一些应用会在卸载结束后运行指定进程,该指定进程指代用于对待卸载应用的卸载原因信息进行收集的进程。
比如,某些应用在卸载结束后,会打开浏览器以对用户的卸载原因进行信息收集,因此该应用的卸载进程还会创建浏览器进程。即,此时虽然浏览器进程也存在于指定内核对象中,但是针对待卸载应用的卸载过程实际上已经结束了,所以在进行进程监控时还需排除浏览器进程。
综上所述,终端在周期性地检测指定内核对象中是否有进程存在时,如果指定内核对象中已经没有任何进程存在或者仅存在上述指定进程,则确定待卸载应用已卸载完成。
在另一个实施例中,为了更加准确地检测待卸载应用的卸载状态,防止出现有些应用在卸载时,实际上已经卸载完成,但是卸载进程迟迟不退出,从而造成终端确定卸载过程还在执行中的误判假象,针对该种情况,本发明实施例还包括对待卸载应用的安装目录以及注册表信息进行监控的步骤。即,在启动卸载流程后,除了将卸载进程与指定内核对象进行关联之外,还会对待卸载应用的安装目录下的文件以及注册表信息进行监控,详细过程如下。
情况三、如果指定内核对象包含的进程中至少有卸载进程未运行结束或除了指定进程之外的其他子进程未运行结束,则对待卸载应用的注册表信息和待卸载应用的安装目录下的文件进行监控;如果待卸载应用的注册表信息和安装目录下的待卸载应用的主程序文件均不存在,且安装目录下的文件个数小于预设阈值,则确定待卸载应用卸载完成。
针对该种情况,至少有卸载进程未运行结束即表明指定内核对象中至少包括卸载进程,具体可分为下述几种情况:指定内核对象中仅存在卸载进程,或者存在卸载进程以及除了指定进程之外的其他子进程,或者存在卸载进程以及指定进程,或者存在卸载进程、指定进程以及上述其他子进程,本发明实施例对此不进行具体限定。而除了指定进程之外的其他子进程未运行结束,则表明指定内核对象中还存在除了指定进程之外的其他子进程。
在对待卸载应用的注册表信息和待卸载应用的安装目录下的文件进行监控时,通常采取下述方式实现:
调用注册表监控接口函数RegNotifyChangeKeyValue,对待卸载应用的注册表信息进行监控;调用文件监控函数ReadDirectoryChange,对待卸载应用的安装目录下的文件进行监控。
其中,在卸载一个应用结束时,其安装目录的一些残留文件有可能是不能立即被删除的,而是需要等待系统重启之后方可彻底删除。因此,从另一个角度来看,根据安装目录下的文件个数也可确定待卸载应用是否已经卸载完成。如果该安装目录下除了上述残留文件之外的文件都已经被删除了,那么待卸载应用的卸载过程实际已经结束的概率大大提升。其中,预设阈值的大小可通过数据统计得到,比如统计各种类型应用的实际残留文件个数,根据统计得到的各个残留文件个数来设置预设阈值的大小,本发明实施例对此不进行具体限定。
而对于注册表信息来说,在卸载应用时,其对应的注册表信息是需要被删除的。因此,从另一个角度来看,如果待卸载应用的注册表信息已经被删除了,那么表明待卸载应用已经卸载完毕。
其中,主程序文件在本发明实施例中指代后缀名为.exe的可执行程序文件。主程序文件为一个应用的核心所在,如果一个应用的主程序文件均已不存在,那么这个应用已卸载完毕的概率大大提升。因此,本发明实施例除了引入Job机制外,还会综合对注册表信息和安装目录的监控结果来确定一个应用是否已经卸载完毕。在经过上述步骤101至步骤103的处理后完成对某一应用的卸载状态的检测,整个卸载流程可总结归纳为图3所示的方法流程。即,对于终端已安装的每一个应用,均可采取图3所示流程来执行卸载状态的检测。
本发明实施例提供的方法,终端在获取以及响应针对待卸载应用的启动卸载指令,并创建待卸载应用的卸载进程后,还会创建与待卸载应用匹配的指定内核对象,进而建立卸载进程与指定内核对象之间的关联关系,实现该指定内核对象中包含该卸载进程以及卸载进程在执行卸载过程中创建的全部子进程,以达到对该卸载进程以及全部子进程进行监控的目的,这样终端便可根据指定内核对象中各个进程的运行情况,来确定待卸载应用的卸载状态。该种卸载状态的检测方法由于可对卸载流程中的一系列进程全部进行监控,因此大大降低了误判现象的发生,提升了卸载状态的检测精度。
另外,除了上述基于指定内核对象的监控机制外,本发明实施例还通过对待卸载应用的安装目录以及注册表信息进行同步监控,进一步对待卸载应用是否卸载结束进行验证,进一步地提升了卸载状态的检测精度。
图4是本发明实施例提供的一种应用的卸载状态检测装置的结构示意图。参见图4,该装置包括:
第一创建模块401,用于获取针对待卸载应用的启动卸载指令,响应启动卸载指令,创建待卸载应用的卸载进程;
第二创建模块402,用于创建与待卸载应用匹配的指定内核对象;
建立模块403,用于建立卸载进程与指定内核对象之间的关联关系,以使指定内核对象对卸载进程以及卸载进程在执行卸载过程中创建的全部子进程进行监控,指定内核对象中包含卸载进程以及全部子进程;
确定模块404,根据指定内核对象中进程的运行情况,确定待卸载应用的卸载状态。
在另一个实施例中,确定模块404,用于如果指定内核对象包含的进程中仅有指定进程未运行结束,则确定待卸载应用已卸载完成,指定进程指代用于对待卸载应用的卸载原因信息进行收集的进程,且指定进程为卸载进程在卸载过程中创建的一个子进程。
在另一个实施例中,确定模块404,用于如果指定内核对象包含的进程中至少有卸载进程未运行结束或除了指定进程之外的其他子进程未运行结束,则对待卸载应用的注册表信息和待卸载应用的安装目录下的文件进行监控;
如果待卸载应用的注册表信息和安装目录下的待卸载应用的主程序文件均不存在,且安装目录下的文件个数小于预设阈值,则确定待卸载应用卸载完成。
在另一个实施例中,确定模块404,用于如果指定内核对象包含的全部进程中卸载进程以及全部子进程均运行结束,则确定待卸载应用已卸载完成。
在另一个实施例中,第一创建模块401,用于在通过控制面板显示的已安装应用列表中,获取针对待卸载应用的选中指令,响应选中指令,运行待卸载应用的卸载程序,以创建卸载进程;或,在待卸载应用的安装目录下,查找待卸载应用的卸载程序,接收针对卸载程序的启动运行指令,响应启动运行指令,运行卸载程序,以创建卸载进程;或,在通过第三方卸载应用显示的已安装应用列表中,获取针对待卸载应用的选中指令,响应选中指令,创建卸载进程。
在另一个实施例中,第二创建模块402,用于调用操作系统提供的用于创建工作内核对象的函数,创建与待卸载应用的应用名称一致的指定内核对象;
建立模块403,用于调用操作系统提供的用于关联进程与工作内核对象的函数,建立卸载进程与指定内核对象之间的关联关系。
在另一个实施例中,确定模块404,用于调用操作系统提供的用于对注册表进行监控的接口函数,对待卸载应用的注册表信息进行监控;调用操作系统提供的用于对文件进行监控的接口函数,对待卸载应用的安装目录下的文件进行监控。
本发明实施例提供的装置,终端在获取以及响应针对待卸载应用的启动卸载指令,并创建待卸载应用的卸载进程后,还会创建与待卸载应用匹配的指定内核对象,进而建立卸载进程与指定内核对象之间的关联关系,实现该指定内核对象中包含该卸载进程以及卸载进程在执行卸载过程中创建的全部子进程,以达到对该卸载进程以及全部子进程进行监控的目的,这样终端便可根据指定内核对象中各个进程的运行情况,来确定待卸载应用的卸载状态。该种卸载状态的检测方法由于可对卸载流程中的一系列进程全部进行监控,因此大大降低了误判现象的发生,提升了卸载状态的检测精度。
另外,除了上述基于指定内核对象的监控机制外,本发明实施例还通过对待卸载应用的安装目录以及注册表信息进行同步监控,还进一步对待卸载应用是否卸载结束进行验证,进一步地提升了卸载状态的检测精度。
需要说明的是:上述实施例提供的应用的卸载状态检测装置在检测应用的卸载状态时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用的卸载状态检测装置与应用的卸载状态检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本发明实施例提供的一种终端的结构示意图,该终端可以用于执行上述实施例中提供的应用的卸载状态检测方法。参见图5,该终端500包括:
RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(WirelessFidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端500的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端500的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图5中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输出功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端500还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端500移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端500还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端500之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端500的通信。
WiFi属于短距离无线传输技术,终端500通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。
处理器180是终端500的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端500的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端500还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端500还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含用于执行上述应用的卸载状态检测方法的指令。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种应用的卸载状态检测方法,其特征在于,所述方法包括:
获取针对待卸载应用的启动卸载指令,响应所述启动卸载指令,创建所述待卸载应用的卸载进程;
调用操作系统提供的用于创建工作内核对象的函数,创建与所述待卸载应用的应用名称一致的指定内核对象;
建立所述卸载进程与所述指定内核对象之间的关联关系,以使所述指定内核对象对所述卸载进程以及所述卸载进程在执行卸载过程中创建的全部子进程进行监控,所述指定内核对象中包含所述卸载进程以及所述全部子进程;
根据所述指定内核对象中进程的运行情况,确定所述待卸载应用的卸载状态;其中,
如果所述指定内核对象包含的进程中仅有指定进程未运行结束,则确定所述待卸载应用已卸载完成,所述指定进程指代用于对所述待卸载应用的卸载原因信息进行收集的进程,且所述指定进程为所述卸载进程在卸载过程中创建的一个子进程;
如果所述指定内核对象包含的进程中至少有所述卸载进程未运行结束或除了指定进程之外的其他子进程未运行结束,则对所述待卸载应用的注册表信息和所述待卸载应用的安装目录下的文件进行监控;
如果所述待卸载应用的注册表信息和所述安装目录下的所述待卸载应用的主程序文件均不存在,且所述安装目录下的文件个数小于预设阈值,则确定所述待卸载应用卸载完成。
2.根据权利要求1所述的方法,其特征在于,所述根据所述指定内核对象中进程的运行情况,确定所述待卸载应用的卸载状态,包括:
如果所述指定内核对象包含的进程中所述卸载进程以及所述全部子进程均运行结束,则确定所述待卸载应用已卸载完成。
3.根据权利要求1或2中任一权利要求所述的方法,其特征在于,所述获取针对待卸载应用的启动卸载指令,响应所述启动卸载指令,创建所述待卸载应用的卸载进程,包括:
在通过控制面板显示的已安装应用列表中,获取针对所述待卸载应用的选中指令,响应所述选中指令,运行所述待卸载应用的卸载程序,以创建所述卸载进程;或,
在所述待卸载应用的安装目录下,查找所述待卸载应用的卸载程序,接收针对所述卸载程序的启动运行指令,响应所述启动运行指令,运行所述卸载程序,以创建所述卸载进程;或,
在通过第三方卸载应用显示的所述已安装应用列表中,获取针对所述待卸载应用的选中指令,响应所述选中指令,创建所述卸载进程。
4.根据权利要求1或2中任一权利要求所述的方法,其特征在于,所述建立所述卸载进程与所述指定内核对象之间的关联关系,包括:
调用操作系统提供的用于关联进程与工作内核对象的函数,建立所述卸载进程与所述指定内核对象之间的关联关系。
5.根据权利要求1所述的方法,其特征在于,所述对所述待卸载应用的注册表信息和所述待卸载应用的安装目录下的文件进行监控,包括:
调用操作系统提供的用于对注册表进行监控的接口函数,对所述待卸载应用的注册表信息进行监控;
调用所述操作系统提供的用于对文件进行监控的接口函数,对所述待卸载应用的安装目录下的文件进行监控。
6.一种应用的卸载状态检测装置,其特征在于,所述装置包括:
第一创建模块,用于获取针对待卸载应用的启动卸载指令,响应所述启动卸载指令,创建所述待卸载应用的卸载进程;
第二创建模块,用于调用操作系统提供的用于创建工作内核对象的函数,创建与所述待卸载应用匹配的应用名称一致的指定内核对象;
建立模块,用于建立所述卸载进程与所述指定内核对象之间的关联关系,以使所述指定内核对象对所述卸载进程以及所述卸载进程在执行卸载过程中创建的全部子进程进行监控,所述指定内核对象中包含所述卸载进程以及所述全部子进程;
确定模块,根据所述指定内核对象中进程的运行情况,确定所述待卸载应用的卸载状态;其中,
所述确定模块,用于如果所述指定内核对象包含的进程中仅有指定进程未运行结束,则确定所述待卸载应用已卸载完成,所述指定进程指代用于对所述待卸载应用的卸载原因信息进行收集的进程,且所述指定进程为所述卸载进程在卸载过程中创建的一个子进程;
所述确定模块,还用于如果所述指定内核对象包含的进程中至少有所述卸载进程未运行结束或除了指定进程之外的其他子进程未运行结束,则对所述待卸载应用的注册表信息和所述待卸载应用的安装目录下的文件进行监控;
如果所述待卸载应用的注册表信息和所述安装目录下的所述待卸载应用的主程序文件均不存在,且所述安装目录下的文件个数小于预设阈值,则确定所述待卸载应用卸载完成。
7.根据权利要求6所述的装置,其特征在于,所述确定模块,用于如果所述指定内核对象包含的全部进程中所述卸载进程以及所述全部子进程均运行结束,则确定所述待卸载应用已卸载完成。
8.根据权利要求6或7中任一权利要求所述的装置,其特征在于,所述第一创建模块,用于在通过控制面板显示的已安装应用列表中,获取针对所述待卸载应用的选中指令,响应所述选中指令,运行所述待卸载应用的卸载程序,以创建所述卸载进程;或,在所述待卸载应用的安装目录下,查找所述待卸载应用的卸载程序,接收针对所述卸载程序的启动运行指令,响应所述启动运行指令,运行所述卸载程序,以创建所述卸载进程;或,在通过第三方卸载应用显示的所述已安装应用列表中,获取针对所述待卸载应用的选中指令,响应所述选中指令,创建所述卸载进程。
9.根据权利要求6或7中任一权利要求所述的装置,其特征在于,所述建立模块,用于调用操作系统提供的用于关联进程与工作内核对象的函数,建立所述卸载进程与所述指定内核对象之间的关联关系。
10.根据权利要求6所述的装置,其特征在于,所述确定模块,用于调用操作系统提供的用于对注册表进行监控的接口函数,对所述待卸载应用的注册表信息进行监控;调用所述操作系统提供的用于对文件进行监控的接口函数,对所述待卸载应用的安装目录下的文件进行监控。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710198198.2A CN107122204B (zh) | 2017-03-29 | 2017-03-29 | 应用的卸载状态检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710198198.2A CN107122204B (zh) | 2017-03-29 | 2017-03-29 | 应用的卸载状态检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122204A CN107122204A (zh) | 2017-09-01 |
CN107122204B true CN107122204B (zh) | 2020-12-11 |
Family
ID=59718146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710198198.2A Active CN107122204B (zh) | 2017-03-29 | 2017-03-29 | 应用的卸载状态检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122204B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413474A (zh) * | 2019-06-18 | 2019-11-05 | 深圳壹账通智能科技有限公司 | 应用程序监控方法、装置、电子设备及存储介质 |
CN116541253B (zh) * | 2023-07-07 | 2024-03-26 | 深圳软牛科技有限公司 | 应用的检测方法、系统、终端设备和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761178A (zh) * | 2014-01-17 | 2014-04-30 | 北京奇虎科技有限公司 | 一种实现应用卸载调查的方法 |
CN105278925A (zh) * | 2014-06-05 | 2016-01-27 | 腾讯科技(深圳)有限公司 | 对卸载的软件进行垃圾清除的方法及装置 |
-
2017
- 2017-03-29 CN CN201710198198.2A patent/CN107122204B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761178A (zh) * | 2014-01-17 | 2014-04-30 | 北京奇虎科技有限公司 | 一种实现应用卸载调查的方法 |
CN105278925A (zh) * | 2014-06-05 | 2016-01-27 | 腾讯科技(深圳)有限公司 | 对卸载的软件进行垃圾清除的方法及装置 |
Non-Patent Citations (1)
Title |
---|
https://www.xuebuyuan.com/1215466.html;佚名;《https://www.xuebuyuan.com/1215466.html》;20131103;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107122204A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107734616B (zh) | 应用程序关闭方法、装置、存储介质和电子设备 | |
CN106775833B (zh) | 设备驱动程序加载方法、终端及系统 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
CN106874077B (zh) | 进程运行方法及装置 | |
CN107329901B (zh) | 数据包抓取方法、终端、服务器和存储介质 | |
CN106775828B (zh) | 应用程序安装方法及装置、计算机设备 | |
WO2015078342A1 (en) | Method for acquiring memory information, and terminal | |
CN107908407B (zh) | 编译方法、装置及终端设备 | |
WO2017206915A1 (zh) | 处理器中内核运行配置的确定方法以及相关产品 | |
CN106713608B (zh) | 应用的功能状态修改方法、装置及终端 | |
CN109240902B (zh) | 一种获取电子设备的固件代码的方法和装置 | |
US20170097725A1 (en) | Device and method for starting mobile terminal application and mobile terminal | |
CN108804915B (zh) | 病毒程序清理方法、存储设备及电子终端 | |
WO2018058436A1 (zh) | 一种加载软件程序的方法、用户终端及存储介质 | |
CN105278925B (zh) | 对卸载的软件进行垃圾清除的方法及装置 | |
WO2014166307A1 (en) | Method for determining performance of process of application and computer system | |
CN106095423B (zh) | 提供浏览服务的方法、终端及服务器 | |
CN109688611B (zh) | 一种频段参数的配置方法、装置、终端和存储介质 | |
CN106919458B (zh) | Hook目标内核函数的方法及装置 | |
CN105278942B (zh) | 组件管理方法及装置 | |
EP3129883B1 (en) | Method and apparatus for repairing dynamic link library file | |
CN107122204B (zh) | 应用的卸载状态检测方法及装置 | |
CN107967203B (zh) | 基于可执行文件的函数判定方法及装置 | |
CN107463395B (zh) | 组件调用方法及装置 | |
CN112199246A (zh) | 终端测试方法、装置、存储介质及移动终端 |
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 |