CN102521081B - 修复遭破坏的软件 - Google Patents

修复遭破坏的软件 Download PDF

Info

Publication number
CN102521081B
CN102521081B CN201110405228.5A CN201110405228A CN102521081B CN 102521081 B CN102521081 B CN 102521081B CN 201110405228 A CN201110405228 A CN 201110405228A CN 102521081 B CN102521081 B CN 102521081B
Authority
CN
China
Prior art keywords
file
destroyed
assembly
software
group
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
Application number
CN201110405228.5A
Other languages
English (en)
Other versions
CN102521081A (zh
Inventor
A·米什拉
M·戴
C·基恩
M·费
D·里瓦特
A·B·巴克
R·西格瓦尔德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102521081A publication Critical patent/CN102521081A/zh
Application granted granted Critical
Publication of CN102521081B publication Critical patent/CN102521081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

本发明涉及修复遭破坏的软件。用于修复计算机系统的遭破坏的软件组件的系统和方法。利用自动化组件修复服务来检测并修复遭破坏的软件。从外部存储位置下载修复文件并将其用来修复破坏。所下载的文件优选地是修复所标识的破坏所必需的最小数据量。修复遭破坏的文件的过程结合软件更新服务来使用,通过允许修复并随后卸载遭破坏的组件以使得经更新的组件可被正确安装来解决在更新遭破坏的软件时发生的问题。

Description

修复遭破坏的软件
技术领域
本发明涉及软件修复。
背景技术
现代计算机系统运行从操作系统(OS)到应用程序的大量各种软件。单单OS就可包括数万文件。相关文件可被编组成软件组件。
计算机系统的用户知道要更新安装在他们的计算机系统上的软件。更新可包括用于防止新发现的潜在攻击的隐错补丁或安全更新。另外,更新可以发布该软件的早先版本中不包括的新特征。不管更新的原因如何,用户的计算机系统上的遭破坏的软件组件可能阻止正确安装软件更新。
这样的破坏可具有多种原因之一。可因为引入到计算机系统的病毒或由恶意一方进行的某种其他攻击而发生破坏。软件误配置和硬件组件(如存储器和非易失性存储)中的故障也可造成组件破坏。
不管原因如何,破坏可阻止完成更新。例如,微软公司所销售的操作系统包括访问称为WINDOWS的远程服务来安装操作系统的各组件的新版本的软件更新服务。这一服务所进行的更新通常需要在安装各组件的经更新版本之前卸载这些组件的较旧版本。如果较旧版本被破坏,则卸载动作可能不能进行。这将阻止经更新组件的安装,从而留给用户过期的计算机系统。
发明内容
使用用于修复遭破坏的软件的方法可达到经改进的计算机系统稳定性和可靠性。修复遭破坏的软件组件例如可允许卸载各组件的旧版本,以便可以安装经更新的组件。随后使用最新组件来操作该系统以得到经改进的系统稳定性和可靠性。
在怀疑软件的完整性的任何时刻,对该软件进行修复是重要的。例如,如果软件已被破坏或没有正确工作,则计算机系统可以从对该软件进行修复中受益。具体而言,修复软件的方法在可能的最低粒度级工作是有利的。例如,如果发现软件组件遭破坏并且需要修复,则该系统应只修复修补该破坏所必须的最小文件集合。
不管修复遭破坏的软件组件的原因如何,可以通过检测遭破坏的软件组件并对遭破坏的文件列表来进行修复。可定位并下载修复遭破坏的文件所必需的一组文件。随后可使用所下载的文件来修复遭破坏的组件。
在一些实施例中,文件破坏是使用散列函数和分开存储的散列键来检测的。计算机系统随后下载与遭破坏的文件相对应的修复文件的集合。一些实施例包括确保计算机系统接收到的修复文件是真实的且安装安全的确认动作。
在一些实施例中,修复遭破坏的文件的方法被用于软件更新过程中。如果确定待更新的组件遭破坏,则该组件将被修复和卸载。只在这时才安装该组件的经更新的版本。
在其他实施例中,遭破坏的软件的修复可由用户手动地触发。或者,它可由诸如反病毒软件应用程序等系统健康检查程序触发。
以上是对由所附权利要求书所定义的本发明的非限定性的概述。
附图说明
附图不旨在按比例绘制。在附图中,各个附图中示出的每个相同或近乎完全相同的组件由同样的附图标记来表示。出于简明的目的,不是每个组件在每张附图中均被标记。在附图中:
图1是本发明的各实施例可以在其中操作的示例性环境的框图;
图2是根据本发明的一些实施例的计算设备的框图;
图3是本发明的一些实施例中的修复遭破坏的软件的示例性过程的流程图;
图4是本发明的一些实施例中的更新遭破坏的软件的示例性过程的流程图;
图5是本发明的一些实施例中的定位修复文件的示例性过程的流程图;以及
图6是本发明的一些实施例中的确定一组件是否遭破坏的示例性过程的流程图。
具体实施方式
发明人认识到并明白,修复遭破坏的软件组件可以便于更新在计算机系统上执行的软件组件并且可产生更稳定和可靠的计算机系统。本文呈现的系统和方法可以在最小用户干预下对组件进行修复。通过使用自动化的修复服务,可降低用户挫折感且用户可花费较少时间来解决软件更新过程中发生的因故障引起的问题。
在一些实施例中,组件修复服务可以在计算设备上执行。该修复服务可以响应于一个或多个触发来操作,如计算设备上的更新服务完成更新时的故障或来自反病毒组件或其他反恶意软件组件的指示可能遭破坏的组件或组件集合(如,软件子系统)的指示。作为替换或补充,可使用其他触发。在一些实施例中,触发可以是来自待验证子系统的明确请求。在其他实施例中,触发可以是系统完整性受损的任何指示。
不管修复的触发如何,修复服务可以从合适的源获得作为遭破坏的组件的一部分的一个或多个文件的副本。所获得的文件可以提供对遭破坏的组件的破坏有责任的遭破坏文件的未遭破坏的版本。所下载的文件可以是与安装在计算设备上文件相同的版本,并且可被用来修复这些文件,可能通过替换它们来进行修复。
修复文件的合适的源可取决于实施例而变化。在一些实施例中,该源是外部服务器。在一些实施例中,这一外部是可信源。它可以由本领域已知的确认过程来验证。它可以是计算机连接到的本地网络上的服务器。或者,源不必是传统服务器,而是改为对等网络源。在一些实施例中,合适的源可以是内部存储或盘。OS可保持即使在计算机未连接到网络时也可被用来修复软件组件的软件文件的存储。作为示例,OS开发人员可以鼓励原始设备制造商装运带有已存储到计算机存储设备的恢复区的计算机硬件。
经修复的文件随后可被用作遭破坏的组件的卸载操作的一部分。随后可使用未遭破坏的文件来重新安装该组件。可基于经修复的文件来重新安装该组件的同一版本,这是在目标是修复遭破坏的软件时的情况。但在一些实施例中,可以安装该组件的经更新的版本,这可以是在目标是更新被发现已遭破坏的软件时的情况。
可以使用任何合适的机制来标识与遭破坏的组件相对应的一组文件。在一些实施例中,文件可以对应于遭破坏的组件的子集。为了标识这一子集,可以测试这些文件(在它们存在于计算设备上时)以确定是否某一个已遭破坏。这样的测试需要使用散列函数并将与该组件的各文件相关联的一个或多个散列结果同未遭破坏的各文件的相应的散列结果进行比较以标识表示破坏的任何偏差。
可以从任何合适的源获得未遭破坏的文件的散列结果。在一些实施例中,可以由一个或多个包来实现软件组件,每一个包包括清单和净荷。净荷可包括包含被执行来执行该组件的功能的计算机可执行指令的文件。清单可标识形成该包的一部分的文件并且可另外存储每一文件的预期散列结果。例如,通过在文件存在于计算设备上时计算该文件的散列结果并将计算得到的散列结果与清单中的结果进行比较,来检测文件中的破坏。
在一些实施例中,还可检查清单的有效性以确保该包中的各文件的散列结果或该清单的其他部分尚未被破坏。这样的检查可以在存储在清单中的各单独文件的散列结果被用来测试这些文件之前执行,以使得清单可以在用来测试净荷文件之前被修复。对清单的检查可以基于在安装该组件时存储在计算设备上的散列结果。例如,一些操作系统使用数据库(可被称为“注册表”)来存储关于安装在计算设备上的软件或硬件组件的信息。当在安装时对包进行了确认时,例如,组件的安装可将与该组件相关联的每一清单的散列结果值写入注册表。这一散列结果值随后可被用来标识清单的任何破坏。
这样的分开测试清单和净荷文件的方法允许标识该组件中需要修复的各部分并随后从可信源获取这些部分。虽然可以在计算设备上使用安全技术来维护安装在计算设备上的该组件的备份副本的可信存储,但在一些实施例中,各组件的可信源可以是服务器或该计算设备外部的其他设备。在一些实施例中,用来修复计算设备上的遭破坏的文件的文件源可以是更新服务器,如带有操作系统的计算机中的WINDOWS服务器。
更新服务器常规上向计算机系统提供整个包以供下载。这些包可以很大并且利用计算机系统的可用带宽的很大一部分。为了支持修复遭破坏的软件组件,更新服务器可以允许计算设备将其下载限于修复遭破坏的组件所必需的文件,而非下载整个更新包。
所下载的文件可以是任何合适的形式。在一些实施例中,只下载修复所需的最小片段。可用于下载的最小单位可以是所修复的总体软件环境的任何大小单位。所下载的最小单位可以是整个组件、单独文件、或甚至是需要修复的文件的一部分。所下载的文件不必是任何特定格式的。在一些实施例中,文件可被编码或加密。在其他实施例中,可不下载整个文件,而是只下载文件的一部分。
在一些实施例中,可能需要映射来将计算设备上的特定文件与可在外部服务器上访问的内容的特定单元进行相关。例如,更新服务器可以将文件组织成组件,这些组件进而被置于包中,这些包进而按版本来组织。可以进行所标识的故障文件与更新服务器或其他可信源可提供的内容的单元之间的映射,以确定包含用于修复计算设备上的遭破坏文件的文件的一个或多个适当单元。这一映射可以在任何合适的位置执行,包括在计算设备上、在外部服务器上、或部分在计算设备上且部分在外部服务器上。
图1示出了可在其上实现本发明的合适的计算系统环境100的示例。计算系统环境100只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任何限制。也不应该将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
本发明可用各种其他通用或专用计算系统环境或配置来操作。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、平板计算机、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包含上述系统或设备中的任一个的分布式计算环境等。
该计算环境可以执行计算机可执行指令,如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110是可选择性地修复操作系统的各组件或计算设备上的其他软件的计算设备的示例。计算机110的组件可包括,但不限于,处理单元120、系统存储器130、以及将包括系统存储器的各种系统组件耦合到处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线,以及也称为夹层总线的外围部件互连(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能由计算机110访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字多功能盘(DVD)或其他光盘存储设备,磁带盒、磁带、磁盘存储设备或其他磁存储设备,或者能用于存储所需信息且可以由计算机110访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。包含诸如在启动期间帮助在计算机110内的元件之间传输信息的基本例程的基本输入/输出系统133(BIOS)通常储存储在ROM131中。RAM132通常包含处理单元120可立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出操作系统134、应用程序135、其他程序模块136和程序数据137。
计算机110也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器140,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如CDROM或其他光学介质等可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由例如接口140等不可移动存储器接口连接至系统总线121,而磁盘驱动器151和光盘驱动器155通常由例如接口150等可移动存储器接口连接至系统总线121。
以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其他程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其他程序模块136和程序数据137相同或不同。在此操作系统144、应用程序145、其他程序模块146以及程序数据147被给予了不同的编号,以说明至少它们是不同的副本。用户101可以通过输入设备,如键盘162和定点设备161(通常被称为鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但也可以由其他接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)来连接。监视器191或其他类型的显示设备也通过诸如视频接口190之类的接口连接至系统总线121。除监视器之外,计算机还可以包括可以通过输出外围接口195连接的诸如扬声器197和打印机196之类的其他外围输出设备。
计算机110可以使用到一个或多个远程计算机(如远程计算机180)的逻辑连接,以在联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点。远程计算节点180可以是更新服务器的示例。
远程计算机180可以通常包括相对于计算机110所描述的元件中的许多或全部,但在图1中仅示出了存储器存储设备181。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其他网络。这些联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当用于LAN联网环境中时,计算机110通过网络接口或适配器170连接到LAN171。当在WAN联网环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN173建立通信的其他手段。调制解调器172,可以是内置的或外置的,可以经由用户输入接口160或其他适当的机制,连接到系统总线121。在联网环境中,相对于计算机110所描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图1示出了远程应用程序185驻留在存储器设备181上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
图2示出与本发明的一些实施例相关的计算机环境200的各部分。计算机系统210具有用于执行软件的至少一个处理器214。如图1所示,该软件可包括操作系统(OS)134、应用程序135、以及其他程序模块136。但是,应当明白,在计算机系统210上执行的软件的类型或被修复的软件的类型对本发明而言不是关键的。
处理器214连接到至少一个存储设备220。这一存储设备可以是诸如RAM132等易失性存储器、诸如硬盘驱动器或闪存等非易失性存储器141、或非易失性和易失性存储器的组合。该存储设备存储多个软件组件240、250、260和270。每一软件组件240、250、260和270是各个彼此相关的单独文件的集合。在此,“文件”可以是以预定义格式存储在由文件管理组件(未示出)所分配的存储器中的数字数据的有组织的编组。但是,应当明白,“文件”可以是可被操纵的任何合适的数据集,并且这样的“文件”的具体结构对本发明而言不是关键的。
在所示示例中,组件270包括净荷文件272/274和元数据文件276,在一些实施例中元数据文件276被实现成组件的“清单”。净荷文件是计算机系统210的处理器214在执行组件270时所使用的文件。这些文件可包括可执行文件,这些文件有时被格式化成动态链接库(DLL)。元数据文件276存储关于净荷文件的信息,如与组件270的各可执行文件之间的依赖关系有关的细节。例如,如果净荷272依赖于净荷274,则这将被显式地记录在元数据文件276中。本发明不限于上述文件类型。可以支持任何合适格式的文件并且文件的格式可依赖于被修复的组件。
元数据文件276还存储允许测试净荷文件是否遭破坏的信息。在所示实施例中,该信息是散列函数228的一个或多个散列键278的形式,它也被存储在存储设备220上。散列键278是对净荷274的未遭破坏的版本运算散列函数228所得到的结果。散列函数228是可被应用于文件来生成散列结果的计算机可执行组件。这一散列函数228优选地是密码地安全的,但无需如此限制。如果散列函数228是对净荷274的遭破坏的版本执行的,则得自该散列函数的值将与所存储的散列键278不同。这一差异担当净荷文件274在某些方面已经改变——并且潜在地是以对计算机系统210有害的方式被改变的——的清楚指示。
元数据文件276本身也可被破坏。因此,将散列键232存储在系统上的其他位置是有用的。用于存储元数据文件276的散列键232的合适位置的示例是注册表230中。
但是,应当明白,图2只表示允许标识遭破坏的文件的信息的安排的一个示例。在一些实施例中,将元数据包括在净荷文件274中使得无需单独的元数据文件276是可能的。在这种情况下,散列键278可与元数据的其余部分一起被包括在净荷文件274中。
存储设备220还存储组件修复服务222。这也是优选地作为OS134的一部分的软件,但也可以是单独的应用程序135。将结合图3来讨论组件修复服务222的操作,图3详细描述了修复遭破坏的软件组件的方法的实施例。
可以用若干不同方式中的任何一种方式来启动302组件修复服务222。在一些实施例中,由手动地运行组件修复服务222的用户101来启动它。在另一实施例中,组件修复服务222可以由诸如反病毒程序226等系统健康检查程序响应于检测到潜在破坏来激活。在又一实施例中,组件修复服务222可由于软件更新服务224中的故障而执行。如上所述,在一些情况下,软件组件270在遭破坏的情况下不能正确地更新到新版本。因此,遭破坏的组件270可由组件修复服务222在软件更新服务224完成更新之前修复。
应当明白,更新只是其中可以执行对遭破坏的组件的修复的场景的一个示例。其他场景的示例包括软件子系统请求验证。在一些实施例中,可基于来自系统健康检查程序的标识了潜在破坏的指示来执行破坏修复。其他实施例可以选择基于遭破坏的软件未正确工作并致使系统的完整性受损的任何指示来修复该软件。
如本文所描述的,修复服务222和更新服务224是分开的组件。然而,在一些实施例中,修复服务222可以是更新服务224的一部分。这样的实施例可依赖于用于访问外部更新服务并挂起对软件组件的访问的现有特征和由修复服务和更新服务类似地执行的任何其他操作。
不管触发组件修复服务222的操作的事件的类型如何,一旦在动作302处启动了组件修复服务222,它就将在动作304检测遭破坏的组件。这可使用散列函数228来实现,如在图6中更详细地示出的。图6中的过程在602处通过执行组件修复服务222来启动。作为所示过程的一部分,在动作604处,组件修复服务222对作为正在测试的组件270的一部分的文件274运行散列函数228该文件可表示净荷文件274、清单文件276、或任何其他合适的文件。随后在动作606处,文件包含清单276或键278以及净荷文件274的情况下,将从对文件运算散列函数所得到的散列值与所存储的散列键232进行比较。如果所生成的散列值不匹配所存储的散列键278,则该文件与原始安装的文件不同,这指示文件破坏。
在动作608处,组件修复服务222检查是否还有文件要评估。如果还有文件要评估,则循环以重复在604处对下一文件进行散列并在606处将散列值与散列键进行比较的过程。如果没有其它文件要检查,则组件修复服务222将在动作610处结束对遭破坏的组件的检测。
是否还有文件要评估可以用任何合适的方式来确定,并且可取决于什么事件触发了组件修复服务222的操作。在一些实施例中,将检查计算机系统210的每一组件240、250、260和270来确定是否遭破坏。在其他实施例中,只测试所选的一组组件。例如,如果诸如反病毒程序226等系统健康检查程序指示特定组件可能遭破坏,则在动作304对遭破坏组件的检测可以只对加标志的组件运行,使得只有这些组件的文件才在图6的过程中被评估。
不管在图6的过程中评估了哪些文件,这些评估的结果可被用于图3的过程中。在动作306,组件修复服务222确定需要修复的遭破坏文件的集合。在此时才确定在动作304被检测为遭破坏的组件和文件中的哪一些应被修复。
在动作308处,组件修复服务222定位将由计算机系统210用来修理遭破坏的文件的修复文件的集合294、296和298。例如,可以在外部服务器280上定位这些文件。图5示出这一动作的一个可能实施例。
该例程在动作502处在组件修复服务222启动图3的动作308时开始。在动作504处,将遭破坏的组件270映射到包292。这一映射可以允许标识组件或组件的各单独文件的适当副本,尤其是在修复文件294、296和298的源将软件组织成与组件修复服务222用来标识遭破坏的组件所使用的格式所不同的格式时。例如,外部服务器280可以将各组文件存储在各个包中。同样,可以存在用于同一组件的多个版本的软件,对应于被修复的OS的不同版本或该组件本身的不同版本。不管外部服务器上的软件的具体组织如何,该映射可标识可以被下载的软件的适当单位。在所示示例中,软件的该单位是包。软件单位可另选地是单独文件或组件。
一旦确定了包292,这些包必须位于外部服务器280上,这在动作506中实现。位置可以由反映包存储290内的位置的统一资源定位符(URL)或某一其他形式的数据来表示。一旦确定了位置,动作308在动作508处终止。
如果要获得多个文件,则可以对每一这样的文件重复图5的过程。如图3所示,随后使用所确定的一个或多个位置。在动作310处,组件修复服务222使用所确定的所有必需的修复文件294、296和298的一个或多个位置,以下载修复文件,如文件294、296和298(图2)。在一些实施例中,计算机系统210使用网络适配器212来与外部服务器280进行通信,外部服务器280也通过网络适配器282进行通信。如本领域公知的,网络适配器可用于这一目的。然而,存在将计算机系统210连接到外部服务器280的许多方式。它可以是直接连接、局域网、广域网、因特网、或内联网。本领域普通技术人员将理解,可以使用任何合适的连接来将计算机系统210连接到外部服务器280。此外,应当明白,文件不必从外部服务器获得。文件也可从对等网络源获得。该源也不必被限于外部源。在一些实施例中,修复文件的本地存储可被存储在计算机系统210上。
当计算机系统210在动作310接收到修复文件294、296和298时,在动作312,组件修复服务222可任选地确认修复文件294-298。这一确认过程可依赖于在动作304被用于检测遭破坏的组件的相同密码地安全的散列函数228和散列键278。然而,使用与散列函数228无关的确认过程是可能的,并且可以使用任何合适的确认技术,如伴随修复文件的证书或签名。此外,可以对不同的文件或不同的文件类型使用不同的确认技术。例如,清单276可以与净荷文件274不同地确认。
如果确认动作使用相同的散列函数228,则该过程非常类似于图6中示出的过程。散列函数228对每一接收到的文件进行散列,并且所得的值与所存储的散列键278进行比较。如果散列函数228所返回的值与散列键278匹配,则假定修复文件298是有效的。
图3中示出的过程的最终动作314是修复遭破坏的组件。在一些实施例中,这可通过删除遭破坏的文件274并用修复文件298替换它们以盖写遭破坏的文件274来实现。更复杂的修复过程也是可能的,如从修复文件298选择特定信息来修复遭破坏的文件274的特定部分。不管所使用的具体修复过程如何,可对在动作308被确定为需要修复的每一文件执行该过程。但是,在一些实施例中,可以标识不同类型的文件或不同类型的错误,并且给予不同的修复优先级,使得并非所有遭破坏的文件必须被一次修复。一旦在动作314修复了需要修复的所有文件,则在动作316处,组件修复服务222软件停止执行。
所描述的各实施例标识并修复与遭破坏的组件相关联的各单独的遭破坏的文件。尽管这样的方法可以允许快速执行修复同时消耗相对小量的网络带宽,但不要求在文件级对组件进行修复。软件的任何合适的单位可被标识为遭破坏的并被修复。在一些实施例中,只下载修复所需的最小片段。可用于下载的最小单位可以是所修复的总体软件环境的任何大小单位。所下载的最小单位可以是整个组件、单独文件、或甚至是需要修复的文件的一部分。在一些实施例中,可不必下载整个文件,而是改为只下载文件的一部分。
此外,各实施例描述了被修复的操作系统。应当明白,可以使用本文描述的技术来更新任何软件(包括应用程序)。
在本发明的又一实施例中,组件修复服务222可以结合软件更新服务224来使用以提供带有最小用户交互的无缝软件更新。图4中示出了这一方法的一实施例。软件更新服务224可以用任何合适的方式来启动402。例如,它可以自动启动、基于定时时间表或在更新可用时启动,或它可由计算机系统210的用户101手动启动。
在动作404,软件更新服务224随后接收更新特定软件的请求。该请求可来自用户101、来自OS134、来自应用程序135、来自其他程序模块136、或可能来自外部源,如提供关于可用更新的信息的外部更新服务。在动作406处,软件更新服务224确定要更新哪些组件。对软件进行更新的请求可以指定应当更新的特定组件270。或者,可具有用于确定要更新哪一组件的一组规则。例如,该请求可以指示应当对最近未被更新的所有组件执行更新。在另一实施例中,软件更新服务224可以检查计算机系统210的所有组件上的更新并更新具有可用更新的组件。因此,触发一更新的具体事件以及所更新的具体组件对本发明而言不是关键的。
一旦在动作406确定了要更新的组件,则软件更新服务224将选择组件270之一并在动作300修复遭破坏的文件。这一动作可以与结合图3详细描述的组件修复服务222过程相同。这一过程可由组件修复服务222来执行。如果被更新的组件遭破坏,则它必须首先被组件修复服务222修复。
在被修复之后,组件270不再是遭破坏的,并且在动作412处组件270可被正确地卸载。卸载该组件可包括更新注册表230、改变和/或删除与该组件相关联的文件272-276、以及其他管理任务。在动作414处,从外部服务器280下载该组件的经更新版本。这些组件可以是位于包存储单元290中的包291的一部分。在动作416处,随后安装经更新的组件。
如果还有组件需要更新,如在动作418处所确定的,则软件更新服务224将返回动作408,选择要更新的下一组件并对每一其余的组件重复更新过程。一旦更新了被确定为需要更新的所有组件,软件更新服务222在动作420处终止。
注意,图4中的各动作的次序不限于本文所呈现的次序。例如,在动作414下载经更新的组件可以发生在该过程中的任何先前时间点处。此外,该过程中的动作可以同时执行。例如,在动作414中组件的下载可以在动作300中修复遭破坏的组件时发生。同样,在移动到下一组件之前,每一组件不必完全更新。相反,所有动作可以对由软件更新服务224更新的每一组件同时执行。
在又一实施例中,对遭破坏的文件的修复可以串接。例如,如果元数据文件276遭破坏,则不能依赖它来提供有效的散列键278来检测净荷文件274中的破坏。因此,元数据文件276必须首先被修复。一旦修复了它,则组件修复服务222可以使用散列键278来检查净荷274是否遭破坏并完成净荷274的修复过程。
在上述实施例中,当前执行的OS的组件240、250、260和270被修复。在这样的实施例中,对正被修复或更新的任何组件的访问可被阻塞。临时阻止对其访问的任何组件因而可被更新,即使在OS正在使用中时。然而,在一替换实施例中,正在执行的OS可以修复当前没有被计算机系统执行的分开的OS的镜像的各组件。这可以通过允许当前执行的OS将它的组件修复服务用于存储在存储设备210或某一其他外部或可移动存储介质中的OS镜像中的文件上来实现。
至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。这样的更改、修改和改进旨在是本发明的一部分,且旨在处于本发明的精神和范围内。从而,上述描述和附图仅用作示例。
可以多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现各实施例。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。该处理器可被实现为集成电路,集成电路组件中具有一个或多个处理器。然而,可使用电路按照任何适合的方式来实现处理器。
此外,应当理解,计算机可以用多种形式中的任一种来具体化,如机架式计算机、台式计算机、膝上型计算机、或平板计算机。此外,计算机可以具体化在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话、或任何其他适合的便携式或固定电子设备。
同样,计算机可以具有一个或多个输入和输出设备。这些设备主要可用于呈现用户界面。可用于提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。
这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。
而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。此外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
就此,本发明可被具体化为用一个或多个程序编码的一个计算机可读介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、紧致盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他非瞬态的有形计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。这一个或多个计算机可读介质可以是便携的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其他处理器上以便实现本发明上述的各个方面。如此处所使用的,术语“非瞬态计算机可读存储介质”只包含可被认为是产品(即,制品)或机器的计算机可读介质。
此处以一般的意义使用术语“程序”或“软件”来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。
计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形式,诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以按需在多个实施例中进行组合或分布。
而且,数据结构能以任何适合的形式存储在计算机可读介质上。为简化说明,数据结构可被示为具有通过该数据结构中的位置而相关的字段。这些关系同样可以通过对各字段的存储分配传达各字段之间的关系的计算机可读介质中的位置来得到。然而,可以使用任何适合的机制在数据结构的各字段中的信息之间建立关系,包括通过使用指针、标签、或在数据元素之间建立关系的其他机制。
本发明的各个方面可单独、组合或以未在前述实施例中特别讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图形中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。
同样,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何适合的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。
在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。
同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对“包括”、“包含”、或“具有”、“含有”、“涉及“及其变型的使用旨在包括其后所列的项目及其等效方案以及其他项目。

Claims (10)

1.一种用于修复计算机系统的软件的方法,所述方法包括:
使用至少一个计算设备:
检测软件的遭破坏的组件,所述遭破坏的组件包括多个文件,其中所述检测是使用散列函数和分开存储的散列键来进行的;
确定从所述多个文件选择的一组遭破坏的文件,该组遭破坏的文件需要修复以修理所述遭破坏的组件;
获取一组修复文件,该组修复文件对应于所述一组遭破坏的文件;
确认所述一组修复文件,其中所述确认是使用所述散列函数和所述散列键来进行的;以及
如果所述一组修复文件被确认,则修复所述至少一个遭破坏的组件。
2.如权利要求1所述的方法,其特征在于,还包括使用密码地安全的散列键来确认所述一组修复文件中的每一单独的修复文件。
3.如权利要求1所述的方法,其特征在于,还包括在外部服务器上定位(308)所述一组修复文件,其中定位所述一组修复文件包括:
将所述遭破坏的组件映射到包;以及
将所述包映射到所述外部服务器上的位置。
4.如权利要求1所述的方法,其特征在于,检测所述遭破坏的组件是通过从系统健康检查程序组件接收到的通知来触发的,所述通知指示所述遭破坏的组件是遭破坏的。
5.如权利要求1所述的方法,其特征在于,获取一组修复文件包括从所述计算机系统本地的存储中读取或从对等网络源中获取。
6.一种用于更新安装在计算设备上的一个或多个遭破坏的软件组件的方法,所述方法包括:
由在处理器上执行的软件更新服务执行以下操作:
接收更新请求;
确定要更新的一个或多个遭破坏的软件组件;
选择要更新的第一组件,所述第一组件是从所确定的要更新的一个或多个组件中选择的;
由在所述处理器上执行的组件修复服务执行以下操作:
检测所述第一组件是遭破坏的,所述第一组件包括多个文件,其中所述检测是使用散列函数和分开存储的散列键来进行的;
确定所述多个文件中的一组遭破坏的文件;
下载与所述一组遭破坏的文件相对应的一组修复文件;
确认所述一组修复文件,其中所述确认是使用所述散列函数和所述散列键来进行的;
如果所述一组修复文件被确认,则使用所述修复文件来修复所述第一组件;
所述软件更新服务还执行以下操作:
卸载经修复的第一组件;
下载所述第一组件的经更新版本;以及
安装所述第一组件的经更新版本。
7.如权利要求6所述的方法,其特征在于,所述组件修复服务还使用密码地安全的散列键来确认所述一组修复文件中的每一修复文件。
8.如权利要求6所述的方法,其特征在于,所述组件修复服务还在外部服务器上定位所述一组修复文件,其中定位(308)所述一组修复文件包括:
将所述遭破坏的组件映射到包;以及
将所述包映射到所述外部服务器上的位置。
9.如权利要求6所述的方法,其特征在于,所述组件修复服务是通过从所述软件更新服务接收到的出错消息来启动的。
10.如权利要求6所述的方法,其特征在于,所述软件更新服务还执行以下操作:
检查所有遭破坏的软件组件是否已被更新;以及
响应于确定所述遭破坏的软件组件中的一个或多个尚未被更新,选择要更新的第二组件。
CN201110405228.5A 2010-12-01 2011-11-30 修复遭破坏的软件 Active CN102521081B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/958,267 2010-12-01
US12/958,267 US9158605B2 (en) 2010-12-01 2010-12-01 Method, system and device for validating repair files and repairing corrupt software

Publications (2)

Publication Number Publication Date
CN102521081A CN102521081A (zh) 2012-06-27
CN102521081B true CN102521081B (zh) 2016-08-03

Family

ID=46163499

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110405228.5A Active CN102521081B (zh) 2010-12-01 2011-11-30 修复遭破坏的软件

Country Status (7)

Country Link
US (2) US9158605B2 (zh)
EP (1) EP2646913B1 (zh)
KR (1) KR101692817B1 (zh)
CN (1) CN102521081B (zh)
AU (1) AU2010364976B2 (zh)
CA (1) CA2816814C (zh)
WO (1) WO2012074535A1 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8745095B2 (en) * 2011-08-12 2014-06-03 Nexenta Systems, Inc. Systems and methods for scalable object storage
US9110747B2 (en) 2011-11-22 2015-08-18 1Elimited Obtaining program data over a network
US9183393B2 (en) * 2012-01-12 2015-11-10 Facebook, Inc. Multiple system images for over-the-air updates
US8725702B1 (en) * 2012-03-15 2014-05-13 Symantec Corporation Systems and methods for repairing system files
CN103577215A (zh) * 2012-08-10 2014-02-12 腾讯科技(深圳)有限公司 一种软件卸载安装方法及系统
US11126418B2 (en) * 2012-10-11 2021-09-21 Mcafee, Llc Efficient shared image deployment
CN103778114B (zh) * 2012-10-17 2016-03-09 腾讯科技(深圳)有限公司 文件修复系统和方法
JP6259601B2 (ja) * 2013-07-25 2018-01-10 任天堂株式会社 情報処理装置、情報処理システム、情報処理方法及びコンピュータプログラム
US9430523B2 (en) 2013-09-06 2016-08-30 Sap Se Entity-relationship model extensions using annotations
US9354948B2 (en) * 2013-09-06 2016-05-31 Sap Se Data models containing host language embedded constraints
US9361407B2 (en) 2013-09-06 2016-06-07 Sap Se SQL extended with transient fields for calculation expressions in enhanced data models
US9639572B2 (en) 2013-09-06 2017-05-02 Sap Se SQL enhancements simplifying database querying
US9442977B2 (en) 2013-09-06 2016-09-13 Sap Se Database language extended to accommodate entity-relationship models
US9619552B2 (en) 2013-09-06 2017-04-11 Sap Se Core data services extensibility for entity-relationship models
US9621424B2 (en) * 2013-10-04 2017-04-11 Microsoft Technologies Licensing, LLC Providing a common interface for accessing and presenting component configuration settings
US9436455B2 (en) 2014-01-06 2016-09-06 Apple Inc. Logging operating system updates of a secure element of an electronic device
US9483249B2 (en) 2014-01-06 2016-11-01 Apple Inc. On-board applet migration
CN104216736A (zh) * 2014-08-14 2014-12-17 小米科技有限责任公司 增量升级方法、装置及终端设备
US9558060B1 (en) * 2014-08-22 2017-01-31 Sprint Communications Company L.P. End use self-help delivery system
US9934014B2 (en) 2014-08-22 2018-04-03 Apple Inc. Automatic purposed-application creation
US10733045B2 (en) * 2016-07-14 2020-08-04 Microsoft Technology Licensing, Llc Online repair of metadata for structured data including file systems
US10528339B2 (en) * 2017-03-20 2020-01-07 International Business Machines Corporation Cognitive feature based code level update
US11636021B2 (en) * 2017-05-09 2023-04-25 Vmware, Inc. Preserving system integrity using file manifests
US10365910B2 (en) * 2017-07-06 2019-07-30 Citrix Systems, Inc. Systems and methods for uninstalling or upgrading software if package cache is removed or corrupted
US10545840B1 (en) * 2017-07-26 2020-01-28 Amazon Technologies, Inc. Crash tolerant computer system
CN108205446A (zh) * 2017-10-24 2018-06-26 中兴通讯股份有限公司 固件修复方法及装置
US11422901B2 (en) * 2017-11-06 2022-08-23 Hewlett-Packard Development Company, L.P. Operating system repairs via recovery agents
CN109144967B (zh) * 2018-08-13 2021-01-12 爱智慧(广州)科技有限公司 一种用于改进分布式计算系统的维护系统及方法
US10846080B2 (en) 2018-09-06 2020-11-24 International Business Machines Corporation Cooperative updating of software
CN109660398A (zh) * 2018-12-21 2019-04-19 深圳创维数字技术有限公司 路由器系统修复方法、终端及存储介质
US11531532B2 (en) * 2019-01-16 2022-12-20 Vmware, Inc. Remote deployment of provisioned packages
WO2020209863A1 (en) * 2019-04-12 2020-10-15 Holberton School Correction of software coding projects
US11636778B2 (en) 2019-04-12 2023-04-25 Holberton, Inc. Correction of software coding projects
CN110188004A (zh) * 2019-05-31 2019-08-30 烽火通信科技股份有限公司 一种终端设备的双备份软件系统管理方法及系统
RU2739832C1 (ru) * 2019-07-17 2020-12-28 Акционерное общество "Лаборатория Касперского" Система и способ выявления измененных системных файлов для проверки на вредоносность в облачном сервисе
RU2757330C1 (ru) * 2020-06-19 2021-10-13 Акционерное общество "Лаборатория Касперского" Способ выявления несогласованного использования ресурсов вычислительного устройства пользователя
CN112286548A (zh) * 2020-10-16 2021-01-29 锐捷网络股份有限公司 一种补丁升级方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566959A (zh) * 2008-03-26 2009-10-28 赛门铁克公司 利用卷快照防止在失败的恢复操作中的文件损坏

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998047259A2 (en) * 1997-03-10 1998-10-22 Fielder Guy L File encryption method and system
US6108420A (en) * 1997-04-10 2000-08-22 Channelware Inc. Method and system for networked installation of uniquely customized, authenticable, and traceable software application
US6233687B1 (en) * 1998-01-21 2001-05-15 Nortel Networks Limited Method and apparatus for providing configuration information in a network
US6694434B1 (en) * 1998-12-23 2004-02-17 Entrust Technologies Limited Method and apparatus for controlling program execution and program distribution
US6430608B1 (en) * 1999-02-09 2002-08-06 Marimba, Inc. Method and apparatus for accepting and rejecting files according to a manifest
US8347086B2 (en) * 2000-12-18 2013-01-01 Citibank, N.A. System and method for automatically detecting and then self-repairing corrupt, modified of non-existent files via a communication medium
US6757837B1 (en) * 1999-10-19 2004-06-29 Tivo, Inc. Method and apparatus for software failure diagnosis and repair
US6338152B1 (en) * 1999-10-28 2002-01-08 General Electric Company Method and system for remotely managing communication of data used for predicting malfunctions in a plurality of machines
US6567826B1 (en) * 2000-06-23 2003-05-20 Microsoft Corporation Method and system for repairing corrupt files and recovering data
US20040236843A1 (en) * 2001-11-15 2004-11-25 Robert Wing Online diagnosing of computer hardware and software
US20020069363A1 (en) * 2000-12-05 2002-06-06 Winburn Michael Lee System and method for data recovery and protection
US7146531B2 (en) 2000-12-28 2006-12-05 Landesk Software Limited Repairing applications
US20030079216A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Apparatus and method of using a hybrid of fixed media data and network-based data to provide software changes
US7603440B1 (en) * 2001-11-09 2009-10-13 Persystent Technology Corporation System and method for management of end user computing devices
US20040093507A1 (en) 2002-06-26 2004-05-13 Stephan Courcambeck Verification of the integrity of a software code executed by an integrated processor
CN1208719C (zh) 2002-09-27 2005-06-29 联想(北京)有限公司 应用软件自动安装与自动修复的方法
US7047448B2 (en) * 2002-11-21 2006-05-16 Bitfone Corporation Software self-repair toolkit for electronic devices
US7293201B2 (en) * 2003-01-17 2007-11-06 Microsoft Corporation System and method for active diagnosis and self healing of software systems
US7673297B1 (en) 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US7313792B2 (en) 2003-09-08 2007-12-25 Microsoft Corporation Method and system for servicing software
EP1533695B1 (en) * 2003-11-19 2013-08-07 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Updating data in a mobile terminal
US7337427B2 (en) 2004-01-08 2008-02-26 International Business Machines Corporation Self-healing cross development environment
US20050166198A1 (en) * 2004-01-22 2005-07-28 Autonomic Software, Inc., A California Corporation Distributed policy driven software delivery
US7523343B2 (en) * 2004-04-30 2009-04-21 Microsoft Corporation Real-time file system repairs
US8887287B2 (en) * 2004-10-27 2014-11-11 Alcatel Lucent Method and apparatus for software integrity protection using timed executable agents
US7716660B2 (en) 2004-12-14 2010-05-11 Microsoft Corporation Method and system for downloading updates
US8607328B1 (en) * 2005-03-04 2013-12-10 David Hodges Methods and systems for automated system support
WO2006122225A2 (en) * 2005-05-11 2006-11-16 Board Of Trustees Of Michigan State University Corrupted packet toleration and correction system
US20070050678A1 (en) * 2005-08-25 2007-03-01 Motorola, Inc. Apparatus for self-diagnosis and treatment of critical software flaws
US7546492B2 (en) * 2005-12-22 2009-06-09 Sony Corporation Remotely repairing files by hierarchical and segmented cyclic redundancy checks
US7962798B2 (en) 2006-04-17 2011-06-14 The Trustees Of Columbia University In The City Of New York Methods, systems and media for software self-healing
US7594136B2 (en) * 2006-04-19 2009-09-22 Microsoft Corporation Paging-triggered corrupted file recovery
US7523340B2 (en) * 2006-05-31 2009-04-21 Microsoft Corporation Support self-heal tool
US9104574B2 (en) * 2006-06-05 2015-08-11 Reimage Limited System and method for software application remediation
US7617423B2 (en) * 2006-08-14 2009-11-10 Kyocera Corporation System and method for detecting, reporting, and repairing of software defects for a wireless device
US20080162915A1 (en) * 2006-12-29 2008-07-03 Price Mark H Self-healing computing system
CN101021797A (zh) 2007-04-06 2007-08-22 中兴通讯股份有限公司 一种用于嵌入式系统的软件修复和升级方法
US8140908B2 (en) * 2007-06-22 2012-03-20 Microsoft Corporation System and method of client side analysis for identifying failing RAM after a user mode or kernel mode exception
US9324361B2 (en) * 2007-08-14 2016-04-26 Seagate Technology Llc Protecting stored data from traffic analysis
US7904756B2 (en) * 2007-10-19 2011-03-08 Oracle International Corporation Repair planning engine for data corruptions
US7913114B2 (en) * 2008-07-31 2011-03-22 Quantum Corporation Repair of a corrupt data segment used by a de-duplication engine
US8528075B2 (en) * 2008-11-30 2013-09-03 Red Hat Israel, Ltd. Accelerating the execution of anti-virus programs in a virtual machine environment
US8296605B2 (en) * 2008-12-10 2012-10-23 Sap Ag Systems and methods for correcting software errors
US8225135B2 (en) * 2009-07-07 2012-07-17 Drobo, Inc. System and method for protecting users of data storage systems against known problems
WO2011014625A1 (en) * 2009-07-29 2011-02-03 Reversinglabs Corporation Automated unpacking of portable executable files
US8209564B2 (en) * 2010-02-26 2012-06-26 Red Hat, Inc. Systems and methods for initiating software repairs in conjunction with software package updates
US8612398B2 (en) * 2010-03-11 2013-12-17 Microsoft Corporation Clean store for operating system and software recovery

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566959A (zh) * 2008-03-26 2009-10-28 赛门铁克公司 利用卷快照防止在失败的恢复操作中的文件损坏

Also Published As

Publication number Publication date
US9158605B2 (en) 2015-10-13
AU2010364976A1 (en) 2013-05-30
CA2816814C (en) 2020-04-14
EP2646913A4 (en) 2017-11-22
US20120144383A1 (en) 2012-06-07
EP2646913A1 (en) 2013-10-09
EP2646913B1 (en) 2020-05-06
US20160004606A1 (en) 2016-01-07
CN102521081A (zh) 2012-06-27
AU2010364976B2 (en) 2016-12-22
WO2012074535A1 (en) 2012-06-07
CA2816814A1 (en) 2012-06-07
US9910743B2 (en) 2018-03-06
KR20130122747A (ko) 2013-11-08
KR101692817B1 (ko) 2017-01-05

Similar Documents

Publication Publication Date Title
CN102521081B (zh) 修复遭破坏的软件
US10019256B2 (en) Systems and methods for incremental software development
JP4263476B2 (ja) ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム
US10114630B2 (en) Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine
KR101137157B1 (ko) 효과적 패칭
US8424093B2 (en) System and method for updating antivirus cache
US8407692B2 (en) Dynamic correction of component manifests
US11579893B2 (en) Systems and methods for separate storage and use of system BIOS components
NO337222B1 (no) Automatisk deteksjon og utbedring av sårbare filer
JP2005327275A (ja) 効率的なパッチ当て
US20090327679A1 (en) Os-mediated launch of os-independent application
US10241759B2 (en) Detecting open source components built into mobile applications
EP4268107A1 (en) Detecting added functionality in open source package
US11044096B2 (en) Blockchain based digital identity generation and verification
AU2019371545A1 (en) Management system, acquisition device and management method
US9946853B1 (en) Techniques for application code obfuscation
US20050010752A1 (en) Method and system for operating system anti-tampering
JP7222428B2 (ja) 検証情報作成システム、検証情報作成方法、および、検証情報作成プログラム
JP7348492B2 (ja) 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法
WO2020119138A1 (zh) Bios复原文件可信性的验证方法及相关装置
US9372992B1 (en) Ensuring integrity of a software package installer
US20220171852A1 (en) Supervisor-based firmware hardening
McNab et al. An implementation of the linux software repository model for other operating systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150728

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150728

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant