修复动态链接库文件的方法和装置制造方法及图纸

技术编号:12195647 阅读:93 留言:0更新日期:2015-10-14 03:28
本发明专利技术公开了一种修复动态链接库文件的方法和装置,属于通信领域。所述方法包括:读取可执行文件中的导入段;根据所述导入段中记录的DLL文件信息,以及预先建立的DLL文件与保存路径的对应关系,确定有动态链接库DLL文件丢失;当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。所述装置包括:读取模块、确定模块和修复模块。本发明专利技术实现了智能感知DLL文件丢失,并在提示用户后自动进行修复,提高了修复DLL文件的易用性,无需用户手动执行下载和安装等过程,降低对用户的要求,操作简单,方便了用户使用,也提高了修复效率。

【技术实现步骤摘要】

本专利技术涉及通信领域,特别涉及一种修复动态链接库文件的方法和装置
技术介绍
随着计算机技术的发展,客户端软件的种类越来越多,各个软件厂商为了能缩小软件体积,便于独立开发,更好的发布迭代,减少开发人员之间的相互依赖,普遍在开发软件时采用动态链接库(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,为可执行文件not印ad.exe的部分内容示意图。其中包括导入段,导入段中列出了可执行文件not印ad.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文件丢失;当接收到运行所述可执行文件的指令时,提示所述DLL文件丢失,调用所述DLL文件的安装包修复所述DLL文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:张时伟
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1