CN104978237B - 修复动态链接库文件的方法和装置 - Google Patents
修复动态链接库文件的方法和装置 Download PDFInfo
- Publication number
- CN104978237B CN104978237B CN201410145380.8A CN201410145380A CN104978237B CN 104978237 B CN104978237 B CN 104978237B CN 201410145380 A CN201410145380 A CN 201410145380A CN 104978237 B CN104978237 B CN 104978237B
- Authority
- CN
- China
- Prior art keywords
- file
- dll file
- dll
- storing path
- executable
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种修复动态链接库文件的方法和装置,属于通信领域。所述方法包括:读取可执行文件中的导入段;根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。所述装置包括:读取模块、确定模块和修复模块。本发明实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,也提高了修复效率。
Description
技术领域
本发明涉及通信领域,特别涉及一种修复动态链接库文件的方法和装置。
背景技术
随着计算机技术的发展,客户端软件的种类越来越多,各个软件厂商为了能缩小软件体积,便于独立开发,更好的发布迭代,减少开发人员之间的相互依赖,普遍在开发软件时采用动态链接库(Dynamic Link Library,DLL)的方法,来让各个模块之间保持相互独立,从而有助于促进代码重用和内存的有效使用。但与此同时,这样做也会带来一些难以避免的问题,比如:动态链接库的版本与可执行程序的版本不一致,动态链接库被误删或改名等等,这些情况都会导致程序启动或运行时发生DLL文件缺失,进而导致异常结束,甚至崩溃。
目前,一般的软件无法处理自身DLL文件缺失的情况,只能任由程序异常结束,好的软件开发商会在安装程序前提示用户DLL文件缺失。
但是,上述方法的缺点是,用户在看到DLL文件缺失的对话框时,经常会不知所措,即使用户手动下载了DLL文件,也会由于不知道正确的保存路径而导致无法安装,因此,手动修复DLL文件对用户的要求较高,较难实现。
发明内容
有鉴于此,本发明实施例提供了一种修复动态链接库文件的方法和装置,以提高修复DLL文件的易用性,降低对用户的要求。所述技术方案如下:
一方面,提供了一种修复动态链接库文件的方法,包括:
读取可执行文件中的导入段;
根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;
当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。
另一方面,提供了一种修复动态链接库文件的装置,包括:
读取模块,用于读取可执行文件中的导入段;
确定模块,用于根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;
修复模块,用于当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。
本发明实施例提供的技术方案带来的有益效果是:通过读取可执行文件中的导入段,根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件,实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,也提高了修复效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1提供的修复动态链接库文件的方法流程图;
图2是本发明实施例1提供的导入段示意图;
图3是本发明实施例2提供的修复动态链接库文件的方法流程图;
图4是本发明实施例3提供的修复动态链接库文件的装置一种结构图;
图5是本发明实施例3提供的修复动态链接库文件的装置另一种结构图;
图6是本发明实施例4提供的终端结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种修复动态链接库文件的方法,包括:
101:读取可执行文件中的导入段;
通常,可执行文件中都会包含有导入段,导入段中列出了可执行文件所需要的DLL文件,以及可执行文件从每个DLL文件中引用的符号,包括函数、变量等等。
例如,参见图2,为可执行文件notepad.exe的部分内容示意图。其中包括导入段,导入段中列出了可执行文件notepad.exe所需的DLL文件,包括:ADVAPI32.dll和KERNEL32.dll......以及每个DLL文件中用到的函数。如ADVAPI32.dll文件中用到函数RegSetValueExW、RegQueryValueExW、RegCloseKey……这里不一一列出。
102:根据该导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;
本实施例中,DLL文件信息至少包括DLL文件名,进一步地,还可以包括该DLL文件所属的可执行文件名。所述预先建立的对应关系可以以列表的形式存储在本地设备中。该对应关系中可以包括:DLL文件名与对应的保存路径,或者,也可以包括:DLL文件名与对应的保存路径及可执行文件名,本实施例对此不做具体限定。其中,DLL文件名可以作为索引,用来查找对应的保存路径。
103:当接收到运行该可执行文件的指令时,提示该DLL文件丢失,调用该DLL文件的安装包修复该DLL文件。
其中,由于已确定DLL文件丢失,因此,该可执行文件的当前运行过程会异常结束,即无法运行,提示该DLL文件丢失,可以方便用户及时了解可执行文件运行失败的原因,以便确定后续操作。
另外,提示DLL文件丢失可以采用弹出对话框的形式,如TIPS窗口,并在其中显示提示内容,当然,也可以采用其它方式来实现,本实施例对此不做具体限定。
本实施例中,DLL文件的安装包可以由本地设备的操作系统提供,在确定进行修复时,可以自动调用该安装包从而执行DLL文件的安装,确保可执行文件在下次运行时能够正常执行。该安装过程为自动进行,用户无需关心DLL文件的保存路径在哪里,因此,极大地降低了对用户的要求,用户可以根据提示自动完成DLL文件的修复,方便了用户使用。
本实施例中,所述根据该导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,可以包括:
根据该导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到该导入段中记录的各个DLL文件的保存路径;
对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件;
如果存在保存路径下未保存有对应的DLL文件,则确定该未保存的DLL文件丢失。
本实施例中,所述调用该DLL文件的安装包修复该DLL文件之前,还可以包括:
结束该可执行文件的当前运行过程。
本实施例中,所述调用该DLL文件的安装包修复该DLL文件,可以包括:
询问用户是否对该DLL文件进行修复;
在得到该用户的确认后,调用该DLL文件的安装包修复该DLL文件。
本实施例中,所述方法还可以包括:
当再次接收到运行该可执行文件的指令时,判断修复该DLL文件是否完成;
如果修复该DLL文件完成,则响应该再次接收到的指令运行该可执行文件;
如果修复该DLL文件未完成,则拒绝响应该再次接收到的指令或等待该修复完成后再响应该再次接收到的指令。
本实施例提供的上述方法,通过读取可执行文件中的导入段,根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件,实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,而且,在运行可执行文件的过程中,无需执行加载DLL文件至地址空间中的操作就可以判断出DLL文件丢失,在运行之前就完成了预判,从而提高了修复效率。
实施例2
参见图3,本实施例提供了一种修复动态链接库文件的方法,包括:
301:读取可执行文件中的导入段;
302:根据该导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到该导入段中记录的各个DLL文件的保存路径;
303:对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件;
本实施例中,如果读取的导入段中包括多个DLL文件,则会查找得到该多个DLL文件的保存路径,因此,逐一对该多个保存路径进行判断,以获知是否有DLL文件丢失,以及具体是哪个DLL文件丢失。
304:如果存在保存路径下未保存有对应的DLL文件,则确定该未保存的DLL文件丢失;
其中,对于任一个保存路径来说,如果该保存路径下保存有对应的DLL文件,则可以确定该DLL文件未丢失,如果该保存路径下未保存有对应的DLL文件,则可以确定该DLL文件丢失。
当导入段中有多个DLL文件时,逐一对该多个DLL文件的保存路径进行判断,如果所有保存路径下均保存有对应的DLL文件,则可以确定无DLL文件丢失,因此,可以正常运行该可执行文件。本实施例主要涉及有DLL文件丢失的场景,因此,对无DLL文件丢失的场景不做过多说明。当然,对于DLL文件丢失的场景,可以是一个DLL文件丢失,也可以是多个DLL文件丢失,本实施例可以获取到所有丢失的DLL文件的信息,以便逐一进行修复。
305:当接收到运行该可执行文件的指令时,提示该DLL文件丢失,结束该可执行文件的当前运行过程;
由于有DLL文件丢失,因此,该可执行文件当前无法正常运行,则执行异常结束。只有在丢失的DLL文件修复成功后,才可以正常运行该可执行文件。
306:询问用户是否对该DLL文件进行修复,在得到该用户的确认后,调用该DLL文件的安装包修复该DLL文件。
本实施例中,进一步地,上述方法还可以包括:
当再次接收到运行该可执行文件的指令时,判断修复该DLL文件是否完成;
如果修复该DLL文件完成,则响应该再次接收到的指令运行该可执行文件;
如果修复该DLL文件未完成,则拒绝响应该再次接收到的指令或等待该修复完成后再响应该再次接收到的指令。
其中,修复丢失的DLL文件完成后,如果再次运行该可执行文件,则该DLL文件能够正确地加载到为该可执行文件分配的地址空间中,从而保证了该可执行文件可以调用该DLL文件中的相关函数,使得该可执行文件能够正确运行。在修复该DLL文件的过程中,如果收到运行该可执行文件的指令,则无法对该指令进行响应,因此,可以拒绝该指令并提示用户需等待修复完成后再运行,或者也可以默认在收到再次运行指令的情况下,在修复完成后自动运行该可执行文件。
本实施例提供的上述方法,通过读取可执行文件中的导入段,根据该导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到该导入段中记录的各个DLL文件的保存路径,对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件,如果存在保存路径下未保存有对应的DLL文件,则确定该未保存的DLL文件丢失,当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,结束该可执行文件的当前运行过程,询问用户是否对该DLL文件进行修复,在得到该用户的确认后,调用该DLL文件的安装包修复该DLL文件,实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,而且,在运行可执行文件的过程中,无需执行加载DLL文件至地址空间中的操作就可以判断出DLL文件丢失,在运行之前就完成了预判,从而提高了修复效率。
实施例3
参见图4,本实施例提供了一种修复动态链接库文件的装置,包括:
读取模块401,用于读取可执行文件中的导入段;
确定模块402,用于根据该导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;
修复模块403,用于当接收到运行该可执行文件的指令时,提示该DLL文件丢失,调用该DLL文件的安装包修复该DLL文件。
参见图5,本实施例中,确定模块402可以包括:
查找单元402a,用于根据该导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到该导入段中记录的各个DLL文件的保存路径;
判断单元402b,用于对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件;
确定单元402c,用于如果存在保存路径下未保存有对应的DLL文件,则确定该未保存的DLL文件丢失。
本实施例中,所述装置还可以包括:
结束模块,用于在该修复模块调用该DLL文件的安装包修复该DLL文件之前,结束该可执行文件的当前运行过程。
本实施例中,上述修复模块可以包括:
询问单元,用于询问用户是否对该DLL文件进行修复;
修复单元,用于在得到该用户的确认后,调用该DLL文件的安装包修复该DLL文件。
本实施例中,上述装置还可以包括:
响应模块,用于当再次接收到运行该可执行文件的指令时,判断修复该DLL文件是否完成;如果修复该DLL文件完成,则响应该再次接收到的指令运行该可执行文件;如果修复该DLL文件未完成,则拒绝响应该再次接收到的指令或等待该修复完成后再响应该再次接收到的指令。
本实施例提供的上述装置可以执行上述任一方法实施例提供的方法,详细过程详见上述方法实施例中的描述,此处不赘述。上述装置可以应用于终端中,该终端包括但不限于:手机、平板电脑、计算机、笔记本电脑等等。
本实施例提供的上述装置,通过读取可执行文件中的导入段,根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件,实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,而且,在运行可执行文件的过程中,无需执行加载DLL文件至地址空间中的操作就可以判断出DLL文件丢失,在运行之前就完成了预判,从而提高了修复效率。
实施例4
参见图6,本实施例提供了一种终端600,可以包括通信单元610、包括有一个或一个以上非易失性可读存储介质的存储器620、输入单元630、显示单元640、传感器650、音频电路660、WiFi(wireless fidelity,无线保真)模块670、包括有一个或者一个以上处理核心的处理器680、以及电源690等部件。
本领域技术人员可以理解,图6中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
通信单元610可用于收发信息或通话过程中,信号的接收和发送,该通信单元610可以为RF(Radio Frequency,射频)电路、路由器、调制解调器、等网络通信设备。特别地,当通信单元610为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器680处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,通信单元610还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(GeneralPacket Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband Code Division Multiple Access,宽带码分多址)、LTE(LongTerm Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端600的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器620还可以包括存储器控制器,以提供处理器680和输入单元630对存储器620的访问。
输入单元630可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。可选地,输入单元630可包括触敏表面630a以及其他输入设备630b。触敏表面630a,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面630a上或在触敏表面630a附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面630a可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面630a。除了触敏表面630a,输入单元630还可以包括其他输入设备630b。可选地,其他输入设备630b可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及终端600的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元640可包括显示面板640a,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板640a。进一步的,触敏表面630a可覆盖显示面板640a,当触敏表面630a检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板640a上提供相应的视觉输出。虽然在图6中,触敏表面630a与显示面板640a是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面630a与显示面板640a集成而实现输入和输出功能。
终端600还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。可选地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板640a的亮度,接近传感器可在终端600移动到耳边时,关闭显示面板640a和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端600还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器660a,传声器660b可提供用户与终端600之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器660a,由扬声器660a转换为声音信号输出;另一方面,传声器660b将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一终端,或者将音频数据输出至存储器620以便进一步处理。音频电路660还可能包括耳塞插孔,以提供外设耳机与终端600的通信。
为了实现无线通信,该终端上可以配置有无线通信单元670,该无线通信单元670可以为WiFi模块。WiFi属于短距离无线传输技术,终端600通过无线通信单元670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了无线通信单元670,但是可以理解的是,其并不属于终端600的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器680是终端600的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行终端600的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器680可包括一个或多个处理核心;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
终端600还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理系统与处理器680逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源690还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端600还可以包括摄像头、蓝牙模块等,在此不再赘述。
以上结合图6给出了终端600的可选结构,其中一个或多个模块存储于所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个模块具有如下功能:
读取可执行文件中的导入段;
根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;
当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。
其中,所述根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,包括:
根据所述导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到所述导入段中记录的各个DLL文件的保存路径;
对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件;
如果存在保存路径下未保存有对应的DLL文件,则确定所述未保存的DLL文件丢失。
其中,所述调用所述DLL文件的安装包修复所述DLL文件之前,还包括:
结束所述可执行文件的当前运行过程。
其中,所述调用所述DLL文件的安装包修复所述DLL文件,包括:
询问用户是否对所述DLL文件进行修复;
在得到所述用户的确认后,调用所述DLL文件的安装包修复所述DLL文件。
其中,所述一个或多个模块还可以具有如下功能:
当再次接收到运行所述可执行文件的指令时,判断修复所述DLL文件是否完成;
如果修复所述DLL文件完成,则响应所述再次接收到的指令运行所述可执行文件;
如果修复所述DLL文件未完成,则拒绝响应所述再次接收到的指令或等待所述修复完成后再响应所述再次接收到的指令。
本实施例提供的上述终端,通过读取可执行文件中的导入段,根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件,实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,而且,在运行可执行文件的过程中,无需执行加载DLL文件至地址空间中的操作就可以判断出DLL文件丢失,在运行之前就完成了预判,从而提高了修复效率。
实施例5
本发明实施例提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备中时,可以使得该设备执行如下步骤的指令(instructions):
读取可执行文件中的导入段;
根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;
当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。
其中,所述根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,包括:
根据所述导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到所述导入段中记录的各个DLL文件的保存路径;
对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件;
如果存在保存路径下未保存有对应的DLL文件,则确定所述未保存的DLL文件丢失。
其中,所述调用所述DLL文件的安装包修复所述DLL文件之前,还包括:
结束所述可执行文件的当前运行过程。
其中,所述调用所述DLL文件的安装包修复所述DLL文件,包括:
询问用户是否对所述DLL文件进行修复;
在得到所述用户的确认后,调用所述DLL文件的安装包修复所述DLL文件。
其中,上述设备还可以执行如下步骤的指令:
当再次接收到运行所述可执行文件的指令时,判断修复所述DLL文件是否完成;
如果修复所述DLL文件完成,则响应所述再次接收到的指令运行所述可执行文件;
如果修复所述DLL文件未完成,则拒绝响应所述再次接收到的指令或等待所述修复完成后再响应所述再次接收到的指令。
本实施例提供的上述非易失性可读存储介质,通过读取可执行文件中的导入段,根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件,实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,而且,在运行可执行文件的过程中,无需执行加载DLL文件至地址空间中的操作就可以判断出DLL文件丢失,在运行之前就完成了预判,从而提高了修复效率。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种非易失性可读存储介质中,所述非易失性可读存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种修复动态链接库文件的方法,其特征在于,所述方法包括:
读取可执行文件中的导入段,所述导入段中记录的DLL文件信息用于列出所述可执行文件所需要的DLL文件;
根据所述导入段中记录的所述DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,所述预先建立的DLL文件与保存路径的对应关系存储于本地设备中;
当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,包括:
根据所述导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到所述导入段中记录的各个DLL文件的保存路径;
对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件;
如果存在保存路径下未保存有对应的DLL文件,则确定所述未保存的DLL文件丢失。
3.根据权利要求1所述的方法,其特征在于,所述调用所述DLL文件的安装包修复所述DLL文件之前,还包括:
结束所述可执行文件的当前运行过程。
4.根据权利要求1所述的方法,其特征在于,所述调用所述DLL文件的安装包修复所述DLL文件,包括:
询问用户是否对所述DLL文件进行修复;
在得到所述用户的确认后,调用所述DLL文件的安装包修复所述DLL文件。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当再次接收到运行所述可执行文件的指令时,判断修复所述DLL文件是否完成;
如果修复所述DLL文件完成,则响应所述再次接收到的指令运行所述可执行文件;
如果修复所述DLL文件未完成,则拒绝响应所述再次接收到的指令或等待所述修复完成后再响应所述再次接收到的指令。
6.一种修复动态链接库文件的装置,其特征在于,所述装置包括:
读取模块,用于读取可执行文件中的导入段,所述导入段中记录的DLL文件信息用于列出所述可执行文件所需要的DLL文件;
确定模块,用于根据所述导入段中记录的所述DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失,所述预先建立的DLL文件与保存路径的对应关系存储于本地设备中;
修复模块,用于当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。
7.根据权利要求6所述的装置,其特征在于,所述确定模块包括:
查找单元,用于根据所述导入段中记录的DLL文件信息,在预先建立的DLL文件与保存路径的对应关系查找得到所述导入段中记录的各个DLL文件的保存路径;
判断单元,用于对查找得到的每个DLL文件的保存路径,判断该保存路径下是否保存有对应的DLL文件;
确定单元,用于如果存在保存路径下未保存有对应的DLL文件,则确定所述未保存的DLL文件丢失。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
结束模块,用于在所述修复模块调用所述DLL文件的安装包修复所述DLL文件之前,结束所述可执行文件的当前运行过程。
9.根据权利要求6所述的装置,其特征在于,所述修复模块包括:
询问单元,用于询问用户是否对所述DLL文件进行修复;
修复单元,用于在得到所述用户的确认后,调用所述DLL文件的安装包修复所述DLL文件。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
响应模块,用于当再次接收到运行所述可执行文件的指令时,判断修复所述DLL文件是否完成;如果修复所述DLL文件完成,则响应所述再次接收到的指令运行所述可执行文件;如果修复所述DLL文件未完成,则拒绝响应所述再次接收到的指令或等待所述修复完成后再响应所述再次接收到的指令。
11.一种终端,其特征在于,所述终端包括存储器和处理器,所述存储器中存储有一个或多个模块,且所述一个或多个模块由所述处理器执行以实现上述权利要求1至5任一所述的修复动态链接库文件的方法。
12.一种存储介质,其特征在于,所述存储介质中存储有一个或多个模块,且所述一个或多个模块由处理器执行以实现上述权利要求1至5任一所述的修复动态链接库文件的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410145380.8A CN104978237B (zh) | 2014-04-11 | 2014-04-11 | 修复动态链接库文件的方法和装置 |
PCT/CN2015/076231 WO2015154700A1 (en) | 2014-04-11 | 2015-04-10 | Method and apparatus for repairing dynamic link library file |
EP15776029.9A EP3129883B1 (en) | 2014-04-11 | 2015-04-10 | Method and apparatus for repairing dynamic link library file |
US15/102,970 US9928134B2 (en) | 2014-04-11 | 2015-04-10 | Method and apparatus for repairing dynamic link library file |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410145380.8A CN104978237B (zh) | 2014-04-11 | 2014-04-11 | 修复动态链接库文件的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104978237A CN104978237A (zh) | 2015-10-14 |
CN104978237B true CN104978237B (zh) | 2019-03-19 |
Family
ID=54274768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410145380.8A Active CN104978237B (zh) | 2014-04-11 | 2014-04-11 | 修复动态链接库文件的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9928134B2 (zh) |
EP (1) | EP3129883B1 (zh) |
CN (1) | CN104978237B (zh) |
WO (1) | WO2015154700A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107276789B (zh) * | 2017-05-19 | 2020-12-01 | 太仓鸿羽智能科技有限公司 | 日志上传方法、装置及计算机可读存储介质 |
CN108920295A (zh) * | 2018-06-29 | 2018-11-30 | 北京奇虎科技有限公司 | 系统异常的处理方法、装置及系统 |
CN109254797B (zh) * | 2018-08-15 | 2022-01-14 | Oppo广东移动通信有限公司 | 移动终端及其开机控制方法、存储介质 |
US11080102B2 (en) * | 2019-03-13 | 2021-08-03 | Michael Changcheng Chen | System and method for developing modularized application |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353928B1 (en) * | 1999-01-04 | 2002-03-05 | Microsoft Corporation | First run installer |
US8015450B1 (en) * | 2009-03-26 | 2011-09-06 | Symantec Corporation | Systems and methods for detecting and automatically installing missing software components |
CN103473163A (zh) * | 2013-09-11 | 2013-12-25 | 腾讯科技(深圳)有限公司 | 应用程序检测方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7536683B2 (en) * | 1999-01-15 | 2009-05-19 | Adobe Systems Incorporated | Method of dynamically appending a library to an actively running program |
US20020087949A1 (en) * | 2000-03-03 | 2002-07-04 | Valery Golender | System and method for software diagnostics using a combination of visual and dynamic tracing |
GB0017478D0 (en) * | 2000-07-18 | 2000-08-30 | Bit Arts Ltd | Computer software installation |
US7171475B2 (en) * | 2000-12-01 | 2007-01-30 | Microsoft Corporation | Peer networking host framework and hosting API |
US7321988B2 (en) * | 2004-06-30 | 2008-01-22 | Microsoft Corporation | Identifying a code library from the subset of base pointers that caused a failure generating instruction to be executed |
CN101369244A (zh) * | 2007-08-14 | 2009-02-18 | 鸿富锦精密工业(深圳)有限公司 | 图形显示卡测试方法 |
US20100122123A1 (en) * | 2008-11-10 | 2010-05-13 | International Business Machines Corporation | Method for guaranteeing consistency of functional parts across a software installation in a computer |
CN102402455A (zh) * | 2010-09-14 | 2012-04-04 | 北大方正集团有限公司 | 调用动态链接库的方法和装置 |
CN103530118B (zh) * | 2013-09-30 | 2017-01-11 | 广州华多网络科技有限公司 | 将自定义dll注入目标进程的方法及装置 |
-
2014
- 2014-04-11 CN CN201410145380.8A patent/CN104978237B/zh active Active
-
2015
- 2015-04-10 WO PCT/CN2015/076231 patent/WO2015154700A1/en active Application Filing
- 2015-04-10 US US15/102,970 patent/US9928134B2/en active Active
- 2015-04-10 EP EP15776029.9A patent/EP3129883B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353928B1 (en) * | 1999-01-04 | 2002-03-05 | Microsoft Corporation | First run installer |
US8015450B1 (en) * | 2009-03-26 | 2011-09-06 | Symantec Corporation | Systems and methods for detecting and automatically installing missing software components |
CN103473163A (zh) * | 2013-09-11 | 2013-12-25 | 腾讯科技(深圳)有限公司 | 应用程序检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US9928134B2 (en) | 2018-03-27 |
US20160314036A1 (en) | 2016-10-27 |
CN104978237A (zh) | 2015-10-14 |
EP3129883B1 (en) | 2019-01-02 |
WO2015154700A1 (en) | 2015-10-15 |
EP3129883A1 (en) | 2017-02-15 |
EP3129883A4 (en) | 2017-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320598B (zh) | 软件测试方法及装置 | |
CN104780164B (zh) | 一种运行游戏客户端的方法和装置 | |
CN105278937B (zh) | 一种显示弹出框消息的方法及装置 | |
CN103544033B (zh) | 应用程序回退方法、装置及相关设备 | |
CN103365419B (zh) | 一种触发闹钟控制指令的方法和装置 | |
CN106066686B (zh) | 一种信息处理方法及终端设备 | |
CN104093123B (zh) | 应用程序的信息推送方法、装置和系统、移动终端 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
CN104965722B (zh) | 一种显示信息的方法及装置 | |
CN104572819A (zh) | 一种垃圾数据的清理方法和系统 | |
CN105530239B (zh) | 多媒体数据获取方法及装置 | |
US20220255639A1 (en) | Radio frequency parameter processing method and device, and mobile terminal and storage medium | |
CN106155717A (zh) | 一种将sdk集成到第三方apk的方法和装置 | |
CN108090345A (zh) | linux系统外部命令执行方法及装置 | |
CN104077211A (zh) | 一种移动终端软件的测试方法及测试系统 | |
CN104978237B (zh) | 修复动态链接库文件的方法和装置 | |
CN107219951A (zh) | 触控屏控制方法、装置、存储介质及终端设备 | |
CN105278925B (zh) | 对卸载的软件进行垃圾清除的方法及装置 | |
CN105808043A (zh) | 一种终端应用的设置方法和移动终端 | |
CN106708555B (zh) | 一种加载插件的方法和装置 | |
CN106708501B (zh) | 活动监控方法及装置 | |
CN105553718B (zh) | 引导信息显示方法及装置 | |
CN106484615B (zh) | 记录日志的方法和装置 | |
CN105653394B (zh) | 数据备份的方法和装置 | |
CN104751333B (zh) | 一种信息交互的方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |