IP Library Granted Patent US 8,015,450
Granted Patent B1
US 8,015,450 · App. 12/411,755 · Granted Sep 6, 2011

Systems and methods for detecting and automatically installing missing software components

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,015,450
App. No.
12/411,755
Granted
Sep 6, 2011
Kind
B1
Abstract

Computer-implemented methods and systems for detecting and automatically installing missing software components are disclosed. In one example, an exemplary method for performing such a task may comprise: 1) detecting a failed attempt by a process to load a shared object, 2) identifying the shared object requested in the failed attempt, 3) automatically obtaining the shared object from a network-accessible storage device, 4) installing the shared object on the computing device, and then 5) successfully loading the shared object.

Claims (60)

1. A computer-implemented method for detecting and automatically installing missing software components, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

detecting a failed attempt by a process to load a shared object;

identifying the shared object requested in the failed attempt;

automatically obtaining the shared object from a network-accessible storage device at least in part by:

determining that the shared object is not identified within a local cache object that identifies prior unsuccessful attempts to obtain shared objects;

upon determining that the shared object is not identified within the local cache object, transmitting a request for the shared object to the network-accessible storage device, the request comprising metadata that identifies the shared object;

receiving the shared object from the network-accessible storage device;

installing the shared object on the computing device;

successfully loading the shared object.

2. The method of claim 1 , further comprising, upon detecting the failed attempt to load the shared object, suspending the process.

3. The method of claim 2 , further comprising, upon successfully loading the shared object, returning control to the process.

4. The method of claim 1 , wherein detecting the failed attempt to load the shared object comprises detecting the failed attempt using at least one of:

a kernel-mode driver;

a user-mode driver.

5. The method of claim 1 , wherein identifying the shared object comprises identifying the shared object based on at least one of:

the shared object's name;

version information associated with the shared object;

an interface identifier associated with the shared object;

an object identifier associated with the shared object;

at least one import address table entry associated with the shared object;

a digital signature associated with the shared object.

6. The method of claim 1 , wherein automatically obtaining the shared object from the network-accessible storage device comprises automatically obtaining an installation package for the shared object from the network-accessible storage device.

7. The method of claim 1 , wherein installing the shared object on the computing device comprises:

storing the shared object on the computing device;

executing an installation package for the shared object.

8. The method of claim 1 , wherein the shared object comprises a dynamically-linked library.

9. The method of claim 8 , wherein the dynamically-linked library comprises one of:

a side-by-side DLL;

a COM DLL;

a standard DLL.

10. A system for detecting and automatically installing missing software components, the system comprising:

a detection module programmed to detect a failed attempt by a process to load a shared object;

an identification module programmed to identify the shared object requested in the failed attempt;

a local cache object that identifies prior unsuccessful attempts to obtain shared objects;

an installation module programmed to:

automatically obtain the shared object from a network-accessible storage device at least in part by:

determining that the shared object is not identified within the local cache object;

upon determining that the shared object is not identified within the local cache object, transmitting a request for the shared object to the network-accessible storage device, the request comprising metadata that identifies the shared object;

receiving the shared object from the network-accessible storage device;

install the shared object on the computing device;

successfully load the shared object;

at least one processor configured to execute at least one of the detection module, the identification module, and the installation module.

11. The system of claim 10 , wherein the detection module is further programmed to suspend the process upon detecting the failed attempt to load the shared object.

12. The system of claim 11 , wherein the installation module is further programmed to return control to the process upon successfully loading the shared object.

13. The system of claim 10 , wherein the detection module comprises at least one of:

a kernel-mode driver;

a user-mode driver.

14. The system of claim 10 , wherein the installation module automatically obtains the shared object from the network-accessible storage device by automatically obtaining an installation package for the shared object from the network-accessible storage device.

15. The system of claim 10 , wherein the installation module installs the shared object on the computing device by:

storing the shared object on the computing device;

executing an installation package for the shared object.

16. A computer-readable storage medium comprising computer-readable instructions that, when executed by a processor of a computing device, cause the computing device to:

detect a failed attempt by a process to load a shared object;

identify the shared object requested in the failed attempt;

automatically obtain the shared object from a network-accessible storage device at least in part by:

determining that the shared object is not identified within a local cache object that identifies prior unsuccessful attempts to obtain shared objects;

upon determining that the shared object is not identified within the local cache object, transmitting a request for the shared object to the network-accessible storage device, the request comprising metadata that identifies the shared object;

receiving the shared object from the network-accessible storage device;

install the shared object on the computing device;

successfully load the shared object.

Assignments (6)
CHANGE OF NAME Recorded Feb 6, 2023
From: NORTONLIFELOCK INC.
To: GEN DIGITAL INC.
Reel/Frame 062714/0605 →
NOTICE OF SUCCESSION OF AGENCY (REEL 050926 / FRAME 0560) Recorded Sep 13, 2022
From: JPMORGAN CHASE BANK, N.A.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 061422/0371 →
SECURITY AGREEMENT Recorded Sep 13, 2022
From: NORTONLIFELOCK INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062220/0001 →
CHANGE OF NAME Recorded Feb 14, 2020
From: SYMANTEC CORPORATION
To: NORTONLIFELOCK INC.
Reel/Frame 051935/0228 →
SECURITY AGREEMENT Recorded Nov 4, 2019
From: SYMANTEC CORPORATION; BLUE COAT LLC; LIFELOCK, INC,; SYMANTEC OPERATING CORPORATION
To: JPMORGAN, N.A.
Reel/Frame 050926/0560 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2009
From: COOLEY, SHAUN; NEWSTADT, KEITH
To: SYMANTEC CORPORATION
Reel/Frame 022455/0458 →