US20050246704A1 - Registry emulation - Google Patents
Registry emulation Download PDFInfo
- Publication number
- US20050246704A1 US20050246704A1 US11/177,305 US17730505A US2005246704A1 US 20050246704 A1 US20050246704 A1 US 20050246704A1 US 17730505 A US17730505 A US 17730505A US 2005246704 A1 US2005246704 A1 US 2005246704A1
- Authority
- US
- United States
- Prior art keywords
- software application
- computer
- configuration data
- local database
- data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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
- 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/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
Definitions
- the present invention relates generally to computer application software, and specifically to methods and system enabling application software to run on a computer without installation.
- the registry is a system-defined database, which is included as a part of Microsoft Windows 3.1 and later Windows operating systems. It is used by applications and other system components to store and retrieve consistent configuration data. Information regarding the registry and its use is provided in publications available from the Microsoft Developers' Network (MSDN) of Microsoft corporation, Redmond, Wash., including “Platform SDK: Performance Monitoring/Registry,” and Chapter 23 (Registry) of the “Driver Development Kit.” These publications are incorporated herein by reference. Data in the registry can be manipulated using application program interface (API) functions and services described in the above-mentioned publication, as well as with a Windows utility called the Registry Editor (Regedit.exe). Registry-related services are normally carried out by the Virtual Machine Manager (VMM) component of the Windows operating system kernel.
- API application program interface
- the registry stores data in a hierarchically-structured tree. Each node in the tree is called a key. Each key can contain both subkeys (which are themselves keys) and data entries called values.
- an application When an application is installed on a computer running Windows, it typically stores its own registry data in a branch under a key that is created for the particular application. In addition, the application may also use subkeys and values that are stored under other keys, which are shared with the operating system and/or with other applications. While the application is running, it uses the names of the appropriate keys to navigate in the registry for the purpose of reading and writing configuration data. Without the configuration data, the application is unable to run. For this reason, installation is an indispensable preparatory step to running most Windows applications that are known in the art.
- the application creates any necessary new keys and writes the values that it will require in the registry.
- the application must first open an existing key, typically using the RegOpenKeyEx function (or a corresponding service _RegOpenKey), as described in the above-mentioned documentation.
- the key is closed, and the new data are written to the registry.
- a group of keys, subkeys and values belonging to a specified branch of the registry may be saved to a backup file, known as a hive file, using the RegSaveKey function, as described in the above-mentioned MSDN documentation.
- the RegLoadKey function can be used to recall the information from the hive file and to restore it to the registry in a specified location.
- the hive file contains data used by an application, it must be loaded back into the registry before the application can run.
- a computer running a Windows operating system initiates running of a software application without installing on the computer. Instead, registry information needed for the application is provided in a previously-created emulation hive file. The data in the hive file are loaded into the local registry at a predetermined location before the application begins to run.
- a registry emulation function intercepts the application's request. The emulation function determines whether the key is located in the local registry or is taken from the data in the emulation hive file. Based on this determination, the emulation function services the request.
- the registry emulation is transparent to the application and to the operating system, so that the application runs as though it was actually installed on the computer.
- the application software and hive file are stored on a server, which is accessed by the computer via a network, such as the Internet.
- the registry emulation feature enables the computer to run the application without a user of the computer having to spend the time and effort required to download and install the entire application.
- only the hive file and required portions of the application are downloaded.
- configuration changes made by the user while the application is running are saved in the emulation hive file when the computer exits from the application. The next time the user accesses this application, the hive file enables the saved configuration to be restored immediately.
- the local registry on the computer is substantially unaffected, however.
- the emulation hive file is created by actually installing the application on a trial computer, and intercepting requests by the application to write data to the registry during installation.
- a list is maintained of the keys created or used by the application during installation.
- the keys and their values are preferably arranged in a special branch of the registry of the trial computer that is created for this purpose, which mirrors the actual locations of the keys in the registry as used by the installation process. Upon the conclusion of installation, the special branch is saved, thus creating the emulation hive file.
- a method for running a software application on a computer having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer including:
- the database includes a hierarchical database having a tree structure that includes a plurality of branches, and providing the file includes providing data corresponding to one or more branches of the tree structure that are used by the application.
- the operating system includes a Windows operating system
- the database includes a Windows registry
- providing the data includes providing one or more registry keys, wherein intercepting the request includes hooking a registry service request.
- hooking the registry service request includes identifying one of the keys in the request, and processing the request responsive to the identified key.
- providing the file includes providing a hive file, and loading the data from the file into the registry before running the application.
- intercepting the request includes making a determination whether the request relates to one of the branches that contains only the further configuration data, or whether the request relates to another of the branches that is shared with the database, and processing the request responsive to the determination.
- intercepting the request by the application includes receiving a request to alter the further configuration data, and the method includes altering the data in the file responsive to the request.
- the method further includes saving the file including the altered data upon termination of the application, to be used in running the application subsequently.
- returning the item of the further configuration data includes emulating access by the operating system to the database, so that the request is handled in a manner transparent to the application.
- the further configuration data include data that would normally be written to the database in the course of installation of the application on the computer, and running the software application includes running the application substantially without installation on the computer, by using the data in the file.
- the method includes receiving the file and the application by download over a network to run on the computer. Further preferably, accessing the data includes providing the installation data from the file in a manner that emulates access by the operating system to the database, whereby the data are accessed in a manner transparent to the application.
- providing the file includes collecting the installation data responsive to installing the application on a trial computer.
- writing the installation data includes saving one or more registry keys in a hive file.
- saving the one or more registry keys in the hive file includes creating an emulation branch in the registry that mirrors locations at which the one or more keys are stored in the registry during the installation on the trial computer, and saving the emulation branch in the hive file.
- computer apparatus having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the apparatus, which apparatus is adapted to receive a file containing further configuration data required by an application, which further data are not stored in the local database, and to run an application under the operating system by intercepting requests made by the application to access the database and to return, responsive to the requests, items of the further configuration data from the file to the application.
- computer apparatus for running a software application under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during installation of the application on the apparatus, which apparatus is adapted to receive a file containing the installation data, which are not stored in the local database, and to run the application without the installation of the application on the apparatus by retrieving the installation data from the file instead of accessing the local database.
- a computer software product for enabling a software application to run on a computer having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause the computer to receive a file containing further configuration data required by the application, which further data are not stored in the local database, and to intercept a request by the application to access the local database, so as to return an item of the further configuration data to the application, responsive to the request.
- a computer software product for enabling a software application to run on a computer without installation of the application on the computer, under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during the installation of the application on the computer, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause the computer to read a file containing the installation data, which installation data are not stored in the database, and to access the data in the file instead of accessing the local database so as to retrieve the installation data while running the application.
- a computer software product for generating an emulation file for use in running a software application on a user computer under an operating system that provides a local database containing consistent configuration data to be accessed by programs running under the operating system, which configuration data would normally include installation data generated during installation of the application, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by a trial computer, cause the trial computer to intercept a request generated to write the installation data to the database while the application is being installed on the trial computer, and responsive to the intercepted request, to write the installation data to the emulation file, to be accessed by the application running on the user computer instead of accessing the local database, whereby the application runs on the user computer without installation thereon.
- FIG. 1 is a block diagram that schematically illustrates a system for running computer software applications without installation thereof, in accordance with a preferred embodiment of the present invention
- FIG. 2A is a graph that schematically shows details of a local registry database, as is known in the art
- FIG. 2B is a graph that schematically shows details of an emulation registry database, in accordance with a preferred embodiment of the present invention.
- FIG. 3 is a flow chart that schematically illustrates a method for registry emulation, in accordance with a preferred embodiment of the present invention.
- FIG. 4 is a flow chart that schematically illustrates a method for creating an emulation hive file, in accordance with a preferred embodiment of the present invention.
- FIG. 1 is a block diagram that schematically illustrates a system 20 for running software applications without installation on a computer 21 , in accordance with a preferred embodiment of the present invention.
- Computer 21 preferably comprises a personal computer (PC) running a Microsoft Windows operating system.
- the computer has a disk memory 22 which stores operating system files 24 and a local Windows registry 26 , as well as other data 28 .
- Computer 21 is linked to a server 32 , preferably via a network 30 , such as the Internet.
- a disk memory 34 of the server stores its own operating system files 36 , along with an executable application program file 38 and a hive file 40 associated with the application program.
- the hive file is used to supplement the data in local registry 25 , enabling the application to run on computer 21 without installation, as described hereinbelow.
- FIG. 2B is a graph that schematically illustrates details of an emulation registry database 52 , in accordance with a preferred embodiment of the present invention.
- the figure presents a hypothetical example of a database created to hold registry emulation data for two applications, “GAME A” and “GAME B,” belonging to an application vendor named “RMAT.”
- an emulation key 54 is preferably created under HKEY_LOCAL_MACHINE key 43 , most preferably using “registry spying” procedures described hereinbelow with reference to FIG. 4 .
- the contents of database 52 are stored in hive file 40 .
- key 54 is added to the tree of registry 26 in its designated location under HKEY_LOCAL_MACHINE key 43 .
- the emulation key may be created elsewhere in the registry tree, as long as its location is such as to allow the hive file with the emulation key to be created.
- Emulation key 54 contains subkeys and branches that correspond to the subkeys and branches of local registry 26 . These are typically the subkeys and branches to which application 38 would write its configuration data if the application were actually installed on computer 21 .
- database 52 comprises a second HKEY_LOCAL_MACHINE key 56 under emulation key 54 , with its own software subkey 44 and MYFILES subkey 46 corresponding to the software and file type subkeys in local registry 26 .
- Subkey 46 in database 52 contains a further subkey 58 corresponding to a new file type “.hij” used by the RMAT applications.
- Database 52 also comprises a vendor subkey 60 for RMAT, containing configuration data and values required for the vendor's games.
- FIG. 2C is a graph that schematically shows details of a combined registry database 64 , which is presented by a registry emulation function to application 38 running on computer 21 , in accordance with a preferred embodiment of the present invention.
- Combined database 64 is created from local registry 26 and emulation database 52 . It corresponds to the registry structure that application 39 would encounter on disk 22 if the application were installed there.
- Database 64 is a sort of virtual database, since there is nowhere that it is stored as an integrated unit in this form. Rather, the emulation function running in conjunction with the application on computer 21 provides pieces of the database dynamically, in reply to requests by the application to access the registry.
- the method by which the emulation database is combined with the local registry is described hereinbelow with reference to FIG. 3 . The result is that the registry emulation is transparent to the application, which runs as though it were installed on the computer.
- Combined database 64 includes some keys that are purely local (belonging only to registry 26 ), others that are used only by the registry emulation, and still others that are shared between local and emulation functions.
- vendor subkeys 50 are pure local keys
- vendor subkey 60 is a pure emulation key.
- software subkey 44 and MYFILES subkey 46 are shared, appearing in both registry 26 and emulation database 52 .
- the emulation process preferably refers to both the local registry and the emulation database in order to service the application.
- the application changes one of the shared keys or values the change is preferably recorded in the emulation database, without changing the local registry itself.
- the computer will return to its previous configuration, as given by its local registry.
- FIG. 3 is a flow chart that schematically illustrates a method for running an application with registry emulation, in accordance with a preferred embodiment of the present invention.
- computer 21 connects to server 32 and, at an application request step 72 , invokes application 36 .
- the server provides the necessary application code and hive file 40 .
- the contents of the hive file (database 52 ) are loaded into the registry of computer 21 , preferably using the above-mentioned RegLoadKey function.
- Registry emulation is initiated using database 52 and registry 26 , at a start emulation step 75 .
- the emulation is carried out by a Windows Virtual Device Driver (VxD), which includes the necessary functions to intercept and service registry requests made by application 38 .
- VxD Windows Virtual Device Driver
- Methods of building and loading VxDs are known in the art of Windows programming. For example, tools and procedures for compiling, linking, loading and debugging VxDs are provided by VtoolsD (available from Compuware Numega, http://www.numega.com/). The use of these tools is described in Chapter 5 of the VtoolsD User's Guide , which is incorporated herein by reference.
- the VxD that is used for emulation is preferably pre-installed on disk 22 of computer 21 , and is loaded dynamically at step 75 .
- the VxD may be downloaded from server 32 for installation on computer 21 at this stage.
- Loading of the VxD is preferably accomplished by calling the appropriate Windows API or service. These APIs and services are described in MSDN publications including “Platform SDK: Win32 API” and Chapter 36 (Virtual-Device Loader) of the “Driver Development Kit,” which are incorporated herein by reference.
- VtoolsD provides a utility known as VXDLOAD that can be used for this purpose.
- the application begins to run on computer 21 , at an application running step 76 .
- an appropriate function of the registry emulation VxD intercepts, or “hooks” the request, at a hooking step 78 .
- the following services are hooked:
- each open key is assigned a unique handle, which is preferably used to identify the key in the list.
- the key list can be implemented as an array or a linked list.
- the key list is maintained in memory as a binary-sorted array (sorted by the handles), so that the emulation runs efficiently and does not slow the application.
- a new record is added to the key list whenever RegOpenKey or RegCreateKey is called.
- the registry emulation VxD finds the corresponding key in the key list, at a key finding step 80 . Then, at a servicing step 82 , the emulation provides the application with the requested service.
- the emulation VxD and key list must support the following functions:
- the handle of the key is preferably used as an identifier in carrying out the function.
- the emulation function returns to the application the same range of return codes as the original VMM service would.
- the application is substantially unaware of and unaffected by the emulation.
- the above-mentioned Microsoft Platform SDK documentation lists the possible return codes for each registry-related service. Appendix A provides a brief description and pseudocode listing for all of the hooked services that are provided by the registry emulation functions.
- the emulation functions continue to carry out steps 78 through 82 for each registry service request that is received while the application is running.
- emulation registry database 52 is saved to hive file 40 , including any changes made in the data while the application was running.
- computer 21 again asks to run application 38 , the stored data in the hive file are preferably reloaded, so that the changes made previously are restored.
- Installation of the application is begun at an initial step 90 .
- the spy process intercepts all requests by the application (or by an installer utility associated with the application) to write to the registry of the computer, at a request hooking step 92 .
- the hooking is preferably accomplished in substantially the same manner as at step 78 in the method of FIG. 3 , using the above-mentioned Hook_Device_Service_C service, for example. In this case, the following VMM services must be hooked:
- Each of the hooked requests at step 92 includes a specification of a key, as required by the syntax of the request.
- the operating system responds to these requests by providing the handle corresponding to the key.
- the spy process builds a key list for the application, similar to the key list that is later used at step 90 in the emulation method of FIG. 3 .
- each hooked request is examined, at a key finding step 94 , to determine whether the key already exists in the key list. If the process finds, at a new key step 96 , that the key is not yet on the list, then the key path and handle are captured, in a get key step 98 . This information is added to the key list, in an add key step 100 .
- the spy process services the request (taking the place of the VMM), at a request servicing step 102 .
- Appendix B provides a brief description and pseudocode listing for each of the hooked services that is provided by the spy process.
- the process creates an emulation branch in the registry, exemplified by the branch under emulation subkey 54 in database 52 .
- all of the registry data generated during the installation are written twice: once to the location intended by the application itself, and once to a mirror location in the emulation branch.
- RMAT vendor key 60 will be written both to HKEY_LOCAL_MACHINE ⁇ SOFTWARE ⁇ RMAT and to HKEY_LOCAL_MACHINE ⁇ EMULATION ⁇ HKEY_LOCAL_MACHINE ⁇ SOFTWARE ⁇ RMAT.
- the installation thus proceeds transparently, without the application or installer being aware of the spy process going on.
- the emulation branch of the registry is saved to hive file 40 , at a file saving step 106 , preferably by using the appropriate RegSaveKey command.
- the software required to carry out the functions described hereinabove is typically conveyed to computer 21 and/or server 32 in electronic form, over network 30 , for example.
- some or all of the software may be supplied on tangible media, such as CD-ROM or non-volatile memory.
- registry emulation may also be used locally on computer 21 , for example, to run applications off a medium such as a CD-ROM while saving the time needed for installation on the computer. Running applications without installation also avoids cluttering of local registry 26 with excessive application data.
- embodiments described herein are based on the registry of the Windows operating system, the principles of the present invention are similarly applicable to other operating systems that use a common database to maintain consistent configuration data for different applications.
- This appendix provides a brief description of each of the hooked services provided by the registry emulation process of FIG. 3 , followed by a pseudocode listing of the function for emulation of the service.
- This service accepts the handle of an already open registry key and the path to a subkey.
- the service attempts to open a new key under the existing key using the given path. If successful, a new handle is assigned to the newly-opened registry key.
- This service accepts the handle of an already-open registry key and closes it.
- This service accepts the handle of an already-open registry key and the name of an existing subkey. It returns a string from the default value of the specified subkey.
- This service accepts the handle of an already-open registry key and the name of an existing value. It returns the type, content, and size of the value.
- This service accepts the handle of an already-open registry key and the path to a new subkey. It creates the new subkey.
- This service accepts the handle of an already-open registry key, the name of a new subkey and a string value. It creates the subkey under the existing key and sets its default value to the given string.
- This service accepts the handle of an already-open registry key, along with the name of a value and its type, size and content. It sets the value accordingly, after first creating it if necessary.
- This service accepts the handle of an already-open registry key and an enumeration index, and returns an enumeration of the subkeys under the existing key.
- This service accepts the handle of an already-open registry key and an enumeration index, and returns an enumeration of the values under the existing key.
- This service accepts the handle of an already-open registry key and an enumeration index, and returns information about the key.
- This appendix provides a brief description of each of the hooked services provided by the spy process of FIG. 4 , followed by a pseudocode listing of the function for emulation of the service.
- the spy process hooks some of the same VMM services as the emulation process, it responds to them differently, as detailed below.
- This service accepts the handle of an already-open registry key and the path to a subkey.
- the service attempts to open a new key under the existing key using the given path. If successful, a new handle is assigned to the newly open registry key.
- This service accepts the handle of an already-open registry key and closes it.
- This service accepts the handle of an already-open registry key and the path to a new subkey. It creates the new subkey.
- This service accepts the handle of an already-open registry key, the name of a new subkey and a string value. It creates the subkey under the existing key and sets its default value to the given string.
- This service accepts the handle of an already-open registry key, the name of a value, and the type, size and the content of the value. It sets the value accordingly, creating it if necessary.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
A method for running a software application on a computer having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer. The method includes providing a file containing further configuration data required by the application, which further data are not stored in the local database. A request by the application to access the local database is intercepted, and an item of the further configuration data is returned from the file to the application, responsive to the request.
Description
- This application claims the benefit of a U.S. Provisional Patent Application ______ entitled “Registry Emulation,” filed Mar. 6, 2000, which is assigned to the assignee of the present patent application, and which is incorporated herein by reference.
- The present invention relates generally to computer application software, and specifically to methods and system enabling application software to run on a computer without installation.
- The registry is a system-defined database, which is included as a part of Microsoft Windows 3.1 and later Windows operating systems. It is used by applications and other system components to store and retrieve consistent configuration data. Information regarding the registry and its use is provided in publications available from the Microsoft Developers' Network (MSDN) of Microsoft corporation, Redmond, Wash., including “Platform SDK: Performance Monitoring/Registry,” and Chapter 23 (Registry) of the “Driver Development Kit.” These publications are incorporated herein by reference. Data in the registry can be manipulated using application program interface (API) functions and services described in the above-mentioned publication, as well as with a Windows utility called the Registry Editor (Regedit.exe). Registry-related services are normally carried out by the Virtual Machine Manager (VMM) component of the Windows operating system kernel.
- The registry stores data in a hierarchically-structured tree. Each node in the tree is called a key. Each key can contain both subkeys (which are themselves keys) and data entries called values. When an application is installed on a computer running Windows, it typically stores its own registry data in a branch under a key that is created for the particular application. In addition, the application may also use subkeys and values that are stored under other keys, which are shared with the operating system and/or with other applications. While the application is running, it uses the names of the appropriate keys to navigate in the registry for the purpose of reading and writing configuration data. Without the configuration data, the application is unable to run. For this reason, installation is an indispensable preparatory step to running most Windows applications that are known in the art.
- During the installation procedure, the application creates any necessary new keys and writes the values that it will require in the registry. To add a new key or value to the registry, the application must first open an existing key, typically using the RegOpenKeyEx function (or a corresponding service _RegOpenKey), as described in the above-mentioned documentation. After creating a new subkey or setting a new value, the key is closed, and the new data are written to the registry. A group of keys, subkeys and values belonging to a specified branch of the registry may be saved to a backup file, known as a hive file, using the RegSaveKey function, as described in the above-mentioned MSDN documentation. Subsequently, the RegLoadKey function can be used to recall the information from the hive file and to restore it to the registry in a specified location. When the hive file contains data used by an application, it must be loaded back into the registry before the application can run.
- It is an object of some aspects of the present invention to provide methods for enabling a software application to run on a computer without installation.
- It is a further object of some aspects of the present invention to provide tools for emulating functions of the Windows registry.
- In preferred embodiments of the present invention, a computer running a Windows operating system, and thus having a local registry, initiates running of a software application without installing on the computer. Instead, registry information needed for the application is provided in a previously-created emulation hive file. The data in the hive file are loaded into the local registry at a predetermined location before the application begins to run. When the application attempts to access the registry, by invoking an appropriate key as specified by the application designer, a registry emulation function intercepts the application's request. The emulation function determines whether the key is located in the local registry or is taken from the data in the emulation hive file. Based on this determination, the emulation function services the request. The registry emulation is transparent to the application and to the operating system, so that the application runs as though it was actually installed on the computer.
- In some preferred embodiments of the present invention, the application software and hive file are stored on a server, which is accessed by the computer via a network, such as the Internet. The registry emulation feature enables the computer to run the application without a user of the computer having to spend the time and effort required to download and install the entire application. Typically, only the hive file and required portions of the application are downloaded. Preferably, configuration changes made by the user while the application is running are saved in the emulation hive file when the computer exits from the application. The next time the user accesses this application, the hive file enables the saved configuration to be restored immediately. The local registry on the computer is substantially unaffected, however.
- In some preferred embodiments of the present invention, the emulation hive file is created by actually installing the application on a trial computer, and intercepting requests by the application to write data to the registry during installation. A list is maintained of the keys created or used by the application during installation. The keys and their values are preferably arranged in a special branch of the registry of the trial computer that is created for this purpose, which mirrors the actual locations of the keys in the registry as used by the installation process. Upon the conclusion of installation, the special branch is saved, thus creating the emulation hive file.
- Although preferred embodiments described herein are based on the registry of the Windows operating system, the principles of the present invention are similarly applicable to other operating systems that use a common database to maintain consistent configuration data for different applications.
- There is therefore provided, in accordance with a preferred embodiment of the present invention, a method for running a software application on a computer having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, the method including:
-
- providing a file containing further configuration data required by the application, which further data are not stored in the local database;
- intercepting a request by the application to access the local database; and
- returning an item of the further configuration data from the file to the application, responsive to the request.
- Preferably, the database includes a hierarchical database having a tree structure that includes a plurality of branches, and providing the file includes providing data corresponding to one or more branches of the tree structure that are used by the application. Further preferably, the operating system includes a Windows operating system, and the database includes a Windows registry, and providing the data includes providing one or more registry keys, wherein intercepting the request includes hooking a registry service request. Most preferably, hooking the registry service request includes identifying one of the keys in the request, and processing the request responsive to the identified key. Further preferably, providing the file includes providing a hive file, and loading the data from the file into the registry before running the application.
- Preferably, intercepting the request: includes making a determination whether the request relates to one of the branches that contains only the further configuration data, or whether the request relates to another of the branches that is shared with the database, and processing the request responsive to the determination.
- Additionally or alternatively, intercepting the request by the application includes receiving a request to alter the further configuration data, and the method includes altering the data in the file responsive to the request. Preferably, the method further includes saving the file including the altered data upon termination of the application, to be used in running the application subsequently.
- Preferably, returning the item of the further configuration data includes emulating access by the operating system to the database, so that the request is handled in a manner transparent to the application.
- In a preferred embodiment, the further configuration data include data that would normally be written to the database in the course of installation of the application on the computer, and running the software application includes running the application substantially without installation on the computer, by using the data in the file.
- There is also provided, in accordance with a preferred embodiment of the present invention, a method for running a software application on a computer without installation of the application thereon, under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during the installation of the application, the method including:
-
- providing a file containing the installation data, which are not stored in the local database; and
- accessing the data in the file instead of accessing the local database so as to retrieve the installation data while running the application.
- Preferably, the method includes receiving the file and the application by download over a network to run on the computer. Further preferably, accessing the data includes providing the installation data from the file in a manner that emulates access by the operating system to the database, whereby the data are accessed in a manner transparent to the application.
- In a preferred embodiment, providing the file includes collecting the installation data responsive to installing the application on a trial computer.
- There is additionally provided, in accordance with a preferred embodiment of the present invention, a method for generating an emulation file for use in running a software application on a user computer under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the user computer, which configuration data would normally include installation data generated during installation of the application on the user computer, the method including:
-
- installing the application on a trial computer;
- intercepting a request generated while installing the application to write the installation data to the database on the trial computer; and
- responsive to the intercepted request, writing the installation data to the emulation file, to be accessed by the application running on the user computer in place of accessing the local database, whereby the application runs on the user computer without installation thereon.
- Preferably, writing the installation data includes saving one or more registry keys in a hive file. Most preferably, saving the one or more registry keys in the hive file includes creating an emulation branch in the registry that mirrors locations at which the one or more keys are stored in the registry during the installation on the trial computer, and saving the emulation branch in the hive file.
- There is further provided, in accordance with a preferred embodiment of the present invention, computer apparatus having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the apparatus, which apparatus is adapted to receive a file containing further configuration data required by an application, which further data are not stored in the local database, and to run an application under the operating system by intercepting requests made by the application to access the database and to return, responsive to the requests, items of the further configuration data from the file to the application.
- There is moreover provided, in accordance with a preferred embodiment of the present invention, computer apparatus for running a software application under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during installation of the application on the apparatus, which apparatus is adapted to receive a file containing the installation data, which are not stored in the local database, and to run the application without the installation of the application on the apparatus by retrieving the installation data from the file instead of accessing the local database.
- There is furthermore provided, in accordance with a preferred embodiment of the present invention, apparatus for generating an emulation file for use in running a software application on a user computer under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the user computer, which configuration data would normally include installation data generated during installation of the application on the computer, the apparatus including a trial computer on which the application is installed, which trial computer is adapted to intercept requests, generated while installing the application, to write the installation data to the local database on the trial computer, and which trial computer is further adapted, responsive to the intercepted requests, to write the installation data to the emulation file, to be accessed by the application running on the user computer in place of accessing the local database, whereby the application runs on the user computer without installation thereon.
- There is also provided, in accordance with a preferred embodiment of the present invention, a computer software product for enabling a software application to run on a computer having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause the computer to receive a file containing further configuration data required by the application, which further data are not stored in the local database, and to intercept a request by the application to access the local database, so as to return an item of the further configuration data to the application, responsive to the request.
- There is additionally provided, in accordance with a preferred embodiment of the present invention, a computer software product for enabling a software application to run on a computer without installation of the application on the computer, under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during the installation of the application on the computer, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause the computer to read a file containing the installation data, which installation data are not stored in the database, and to access the data in the file instead of accessing the local database so as to retrieve the installation data while running the application.
- There is further provided, in accordance with a preferred embodiment of the present invention, a computer software product for generating an emulation file for use in running a software application on a user computer under an operating system that provides a local database containing consistent configuration data to be accessed by programs running under the operating system, which configuration data would normally include installation data generated during installation of the application, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by a trial computer, cause the trial computer to intercept a request generated to write the installation data to the database while the application is being installed on the trial computer, and responsive to the intercepted request, to write the installation data to the emulation file, to be accessed by the application running on the user computer instead of accessing the local database, whereby the application runs on the user computer without installation thereon.
- The present invention will be more fully understood from the following detailed description of the preferred embodiments thereof, taken together with the drawings in which:
-
FIG. 1 is a block diagram that schematically illustrates a system for running computer software applications without installation thereof, in accordance with a preferred embodiment of the present invention; -
FIG. 2A is a graph that schematically shows details of a local registry database, as is known in the art; -
FIG. 2B is a graph that schematically shows details of an emulation registry database, in accordance with a preferred embodiment of the present invention; -
FIG. 2C is a graph that schematically shows details of a combined registry database, in accordance with a preferred embodiment of the present invention; -
FIG. 3 is a flow chart that schematically illustrates a method for registry emulation, in accordance with a preferred embodiment of the present invention; and -
FIG. 4 is a flow chart that schematically illustrates a method for creating an emulation hive file, in accordance with a preferred embodiment of the present invention. -
FIG. 1 is a block diagram that schematically illustrates asystem 20 for running software applications without installation on acomputer 21, in accordance with a preferred embodiment of the present invention.Computer 21 preferably comprises a personal computer (PC) running a Microsoft Windows operating system. The computer has adisk memory 22 which stores operating system files 24 and alocal Windows registry 26, as well asother data 28.Computer 21 is linked to aserver 32, preferably via anetwork 30, such as the Internet. Adisk memory 34 of the server stores its own operating system files 36, along with an executableapplication program file 38 and ahive file 40 associated with the application program. The hive file is used to supplement the data in local registry 25, enabling the application to run oncomputer 21 without installation, as described hereinbelow. -
FIG. 22 is a graph that schematically illustrates details ofregistry 26, in accordance with conventions of the Windows operating system. The registry comprises a tree-structured database having aroot 41 and a number of predefined keys at the root, including aHKEY_LOCAL_MACHINE key 43. This latter key conventionally leads to a branch of the tree holding configuration data regarding hardware and software that are installed incomputer 21. Typically, the software configuration data are stored under asoftware subkey 44, which itself contains subkeys such as a “MYFILES”subkey 46 and vendor subkeys 50. All of these subkeys generally contain further subkeys, such as subkeys 49 corresponding to particular file types under subkey 466, as well as values (not shown in this figure). The elements ofregistry 26 and their locations in the registry database are shown inFIG. 2A only by way of example. Windows imposes relatively few constraints on application developers, who may thus choose to define different keys and locations in the registry in which to store their configuration data. -
FIG. 2B is a graph that schematically illustrates details of anemulation registry database 52, in accordance with a preferred embodiment of the present invention. The figure presents a hypothetical example of a database created to hold registry emulation data for two applications, “GAME A” and “GAME B,” belonging to an application vendor named “RMAT.” For this purpose, anemulation key 54 is preferably created underHKEY_LOCAL_MACHINE key 43, most preferably using “registry spying” procedures described hereinbelow with reference toFIG. 4 . The contents ofdatabase 52 are stored inhive file 40. When the hive file is loaded, preferably using the RegLoadKey function of the above-mentioned Microsoft Platform SDK, key 54 is added to the tree ofregistry 26 in its designated location underHKEY_LOCAL_MACHINE key 43. Alternatively, the emulation key may be created elsewhere in the registry tree, as long as its location is such as to allow the hive file with the emulation key to be created. -
Emulation key 54 contains subkeys and branches that correspond to the subkeys and branches oflocal registry 26. These are typically the subkeys and branches to whichapplication 38 would write its configuration data if the application were actually installed oncomputer 21. Thus,database 52 comprises asecond HKEY_LOCAL_MACHINE key 56 underemulation key 54, with itsown software subkey 44 andMYFILES subkey 46 corresponding to the software and file type subkeys inlocal registry 26.Subkey 46 indatabase 52 contains afurther subkey 58 corresponding to a new file type “.hij” used by the RMAT applications.Database 52 also comprises avendor subkey 60 for RMAT, containing configuration data and values required for the vendor's games. -
FIG. 2C is a graph that schematically shows details of a combinedregistry database 64, which is presented by a registry emulation function toapplication 38 running oncomputer 21, in accordance with a preferred embodiment of the present invention. Combineddatabase 64 is created fromlocal registry 26 andemulation database 52. It corresponds to the registry structure that application 39 would encounter ondisk 22 if the application were installed there.Database 64, however, is a sort of virtual database, since there is nowhere that it is stored as an integrated unit in this form. Rather, the emulation function running in conjunction with the application oncomputer 21 provides pieces of the database dynamically, in reply to requests by the application to access the registry. The method by which the emulation database is combined with the local registry is described hereinbelow with reference toFIG. 3 . The result is that the registry emulation is transparent to the application, which runs as though it were installed on the computer. - Combined
database 64 includes some keys that are purely local (belonging only to registry 26), others that are used only by the registry emulation, and still others that are shared between local and emulation functions. For examples vendor subkeys 50 are pure local keys, whilevendor subkey 60 is a pure emulation key. On the otherhand software subkey 44 andMYFILES subkey 46 are shared, appearing in bothregistry 26 andemulation database 52. When the application invokes such a shared key, the emulation process preferably refers to both the local registry and the emulation database in order to service the application. When the application changes one of the shared keys or values, the change is preferably recorded in the emulation database, without changing the local registry itself. Thus, when the application is finished running, the computer will return to its previous configuration, as given by its local registry. -
FIG. 3 is a flow chart that schematically illustrates a method for running an application with registry emulation, in accordance with a preferred embodiment of the present invention. At aconnection step 70,computer 21 connects toserver 32 and, at anapplication request step 72, invokesapplication 36. In response, the server provides the necessary application code and hivefile 40. At aload step 74, the contents of the hive file (database 52) are loaded into the registry ofcomputer 21, preferably using the above-mentioned RegLoadKey function. - Registry emulation is initiated using
database 52 andregistry 26, at astart emulation step 75. The emulation is carried out by a Windows Virtual Device Driver (VxD), which includes the necessary functions to intercept and service registry requests made byapplication 38. Methods of building and loading VxDs are known in the art of Windows programming. For example, tools and procedures for compiling, linking, loading and debugging VxDs are provided by VtoolsD (available from Compuware Numega, http://www.numega.com/). The use of these tools is described in Chapter 5 of the VtoolsD User's Guide, which is incorporated herein by reference. The VxD that is used for emulation is preferably pre-installed ondisk 22 ofcomputer 21, and is loaded dynamically atstep 75. Alternatively, the VxD may be downloaded fromserver 32 for installation oncomputer 21 at this stage. Loading of the VxD is preferably accomplished by calling the appropriate Windows API or service. These APIs and services are described in MSDN publications including “Platform SDK: Win32 API” and Chapter 36 (Virtual-Device Loader) of the “Driver Development Kit,” which are incorporated herein by reference. Alternatively, VtoolsD provides a utility known as VXDLOAD that can be used for this purpose. Upon completion of the emulation (atstep 84, below), the VxD is preferably unloaded. - The application begins to run on
computer 21, at anapplication running step 76. Whenever the application requests one of the registry services provided by the Windows VMM, an appropriate function of the registry emulation VxD intercepts, or “hooks” the request, at a hookingstep 78. Preferably, the following services are hooked: -
- RegOpenKey
- RegCloseKey
- RegQueryValue
- RegQueryValueEx
- RegCreateKey
- RegDeleteKey
- RegSetValue
- RegSetValueEx
- RegEnumKey
- RegEnumValue
- RegQueryInfoKey
Any suitable tools may be used for this purpose, such as the Hook_Device_Service_C service, also provided by VtoolsD. This service enables emulation functions to monitor and replace the services of the VEM with substitute services. Details of these substitute services are described in Appendix A.
- Every registry request made by the application must specify a registry key to which the request refers. To deal with these requests, the registry emulation functions build and maintain a list of all open registry keys, referred to herein as the key list. In the Windows operating system, each open key is assigned a unique handle, which is preferably used to identify the key in the list. The key list can be implemented as an array or a linked list. Preferably, the key list is maintained in memory as a binary-sorted array (sorted by the handles), so that the emulation runs efficiently and does not slow the application. A new record is added to the key list whenever RegOpenKey or RegCreateKey is called.
- In addition to the handle, the following information is preferably collected and held for each key in the list:
-
- The path to the key.
- The number of subkeys that exist under this key in
registry 26, referred to herein as the maximum key index. - The number of values that exist under this key in
registry 26, referred to herein as the maximum value index. - A flag indicating whether or not the key exists in
registry 26, preferably having the value true if the key exists only in emulation database 52 (i.e., a pure emulation key), and false if it exists inregistry 26. - An additional key handle, referred to herein as the parallel key.
Beyond the path and the handle, the other fields in the key list are useful in enhancing the efficiency and speed of the emulation functions. Not all of these fields need be used, and some may be blank. Further details regarding the use of this information are provided in Appendix A.
- For each registry request received from the application, the registry emulation VxD finds the corresponding key in the key list, at a
key finding step 80. Then, at aservicing step 82, the emulation provides the application with the requested service. In order to provide for emulation of all of the registry services that the application may request, the emulation VxD and key list must support the following functions: -
- Add a key to the list,
- Remove a key frog the list.
- Find a key in the list and retrieve its information.
- Find a key in the list and change its information.
- For all of the functions except adding a key to the list, the handle of the key is preferably used as an identifier in carrying out the function. As in any case of service hooking, the emulation function returns to the application the same range of return codes as the original VMM service would. Thus, the application is substantially unaware of and unaffected by the emulation. The above-mentioned Microsoft Platform SDK documentation lists the possible return codes for each registry-related service. Appendix A provides a brief description and pseudocode listing for all of the hooked services that are provided by the registry emulation functions.
- The emulation functions continue to carry out
steps 78 through 82 for each registry service request that is received while the application is running. When the application is finished running,emulation registry database 52 is saved to hivefile 40, including any changes made in the data while the application was running. Whencomputer 21 again asks to runapplication 38, the stored data in the hive file are preferably reloaded, so that the changes made previously are restored. -
FIG. 4 is a flow chart that schematically illustrates a method for creatinghive file 40, in accordance with a preferred embodiment of the present invention. This method is based on “spying” on a trial computer, such ascomputer 21, during installation ofapplication 38 on the computer. The normal installation procedure is used while a spy process monitors information written to the registry, in order to collect the keys and values needed for inclusion inemulation registry database 52. - Installation of the application is begun at an
initial step 90. During installation, the spy process intercepts all requests by the application (or by an installer utility associated with the application) to write to the registry of the computer, at arequest hooking step 92. The hooking is preferably accomplished in substantially the same manner as atstep 78 in the method ofFIG. 3 , using the above-mentioned Hook_Device_Service_C service, for example. In this case, the following VMM services must be hooked: -
- RegOpenKey
- RegCloseKey
- ReqCreateKey
- RegSetValue
- RegSetValueEx
As an alternative to hooking these services, it is possible simply to monitor and record registry accesses by the application or its installer, using a utility such as Regmon (a shareware program available at http://www.sysinternals.com/regmon.htm). The information thus obtained can then be used to manually construct the emulation registry, using Regedit, for example.
- Each of the hooked requests at
step 92 includes a specification of a key, as required by the syntax of the request. The operating system responds to these requests by providing the handle corresponding to the key. Using these keys and their handles, the spy process builds a key list for the application, similar to the key list that is later used atstep 90 in the emulation method ofFIG. 3 . Thus, each hooked request is examined, at akey finding step 94, to determine whether the key already exists in the key list. If the process finds, at a newkey step 96, that the key is not yet on the list, then the key path and handle are captured, in a getkey step 98. This information is added to the key list, in an addkey step 100. - Using the key provided in the hooked request, the spy process services the request (taking the place of the VMM), at a
request servicing step 102. Appendix B provides a brief description and pseudocode listing for each of the hooked services that is provided by the spy process. To save the registry data gathered at this stage, the process creates an emulation branch in the registry, exemplified by the branch underemulation subkey 54 indatabase 52. Then, at adata writing step 104, all of the registry data generated during the installation are written twice: once to the location intended by the application itself, and once to a mirror location in the emulation branch. For example,RMAT vendor key 60 will be written both to HKEY_LOCAL_MACHINE\SOFTWARE\RMAT and to HKEY_LOCAL_MACHINE\EMULATION\HKEY_LOCAL_MACHINE\SOFTWARE\RMAT. The installation thus proceeds transparently, without the application or installer being aware of the spy process going on. Once installation of the application is finished, the emulation branch of the registry is saved to hivefile 40, at afile saving step 106, preferably by using the appropriate RegSaveKey command. - The software required to carry out the functions described hereinabove, such as registry emulation, creating emulation hive files, and running applications without installation, is typically conveyed to
computer 21 and/orserver 32 in electronic form, overnetwork 30, for example. Alternatively, some or all of the software may be supplied on tangible media, such as CD-ROM or non-volatile memory. - Although preferred embodiments are described herein with reference to
system 20, shown inFIG. 1 as a client-server system operating overnetwork 30, the usefulness of registry emulation is in no way limited to such systems. Registry emulation may also be used locally oncomputer 21, for example, to run applications off a medium such as a CD-ROM while saving the time needed for installation on the computer. Running applications without installation also avoids cluttering oflocal registry 26 with excessive application data. Furthermore, although the embodiments described herein are based on the registry of the Windows operating system, the principles of the present invention are similarly applicable to other operating systems that use a common database to maintain consistent configuration data for different applications. - It will thus be appreciated that the preferred embodiments described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and subcombinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art.
- This appendix provides a brief description of each of the hooked services provided by the registry emulation process of
FIG. 3 , followed by a pseudocode listing of the function for emulation of the service. - This service accepts the handle of an already open registry key and the path to a subkey. The service attempts to open a new key under the existing key using the given path. If successful, a new handle is assigned to the newly-opened registry key.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the information from the key list indicates that this key is a pure emulation key, use the original handler to open a new key using the given path; if successful add the new key to the key list, mark it as a pure emulation key; exit
- 4. Use the original handler to open the required path.
- 5. If successful add the new key to the list (it is not a pure emulation key); exit
- 6. Use the original handler to open the required path in the emulation data
- 7. If successful add the new key to the key list, mark it as a pure emulation key: exit
- 8. Return the error code from the original handler and exit
- This service accepts the handle of an already-open registry key and closes it.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. Call the original handler to close the handle
- 4. Remove the key from the list
- This service accepts the handle of an already-open registry key and the name of an existing subkey. It returns a string from the default value of the specified subkey.
- 1. rind the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; exit
- 4. Attempt to open the key in the emulation registry; the result is the emulation key
- 5. If unsuccessful, call the original handler; return any result from the original handler (success or failure); exit
- 6. Use the original handler and the emulation key to get the value from the emulation registry: if successful, return the result and exit
- 7. Call the original handler; return any result from the original handler (success or failure); exit
- This service accepts the handle of an already-open registry key and the name of an existing value. It returns the type, content, and size of the value.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; exit
- 4. Attempt to open the key in the emulation registry, the result is the emulation key
- 5. If unsuccessful, call the original handler; return any result from the original handler (success or failure); exit
- 6. Use the original handler and the emulation key to get the value from the emulation registry; if successful, return the result and exit
- 7. Call the original handler; return any result from the original handler (success or failure); exit
- This service accepts the handle of an already-open registry key and the path to a new subkey. It creates the new subkey.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; if successful, add the newly-created key to the key list as a pure emulation key; exit
- 4. Attempt to open (do not create yet) the new kGy in the real registry; if successful, add the new key to the list (not a pure emulation key); exit
- 5. Open the existing key in the emulation registry
- 6. If unsuccessful, create the existing key in the emulation registry
- 7. Create the new key in the emulation registry
- 8. Add the newly-created key to the key list as a pure emulation key; exit
- This service accepts the handle of an already-open registry key, the name of a new subkey and a string value. It creates the subkey under the existing key and sets its default value to the given string.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; exit
- 4. Open the path to the key in the emulation registry
- 5. If unsuccessful, create the existing key in the emulation registry
- 6. Call the original handler to set the value under the newly-opened/created key in the emulation registry
- 7. Return the result of the original handler and exit
- This service accepts the handle of an already-open registry key, along with the name of a value and its type, size and content. It sets the value accordingly, after first creating it if necessary.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; exit
- 4. Open the path to the key in the emulation registry
- 5. If unsuccessful, create the existing key in the emulation registry
- 6. Call the original handler to set the value under the newly-opened/created key in the emulation registry
- 7. Return the result of the original handler and exit
- This service accepts the handle of an already-open registry key and an enumeration index, and returns an enumeration of the subkeys under the existing key.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; exit
- 4. It the key does not have a parallel key in the list, skip to step 9 below
- 5. Call the original handler to perform the enumeration; if successful, return the result and exit
- 6. If the original handler failed with any error code other than ERROR_NO_MORE_ITEMS, return the error code and exit
- 7. Calculate a new enumeration index by subtracting the enumeration index from the maximum key index
- 8. Call the original handler with the parallel key and the new enumeration index; return the result and exit
- 9. Call the original handler to perform the enumeration; if successful, return the result and exit
- 10. If the original handler failed with any error code other than ERROR_NO_MORE_ITEMS, return the error code and exit
- 11. Open the path to the key in the emulation registry
- 12. If unsuccessful, exit with the code ERROR_NO_MORE_ITEMS
- 13. The key opened in step 11 is now the parallel keys store it in the key list
- 14. The enumeration index is now the maximum key index; store it in the key list
- 15. Call the original handler with the parallel key and enumeration index 0; return the result and exit
- This service accepts the handle of an already-open registry key and an enumeration index, and returns an enumeration of the values under the existing key.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; exit
- 4. If the key does not have a parallel key in the list, skip to step 9 below
- 5. Call the original handler to perform the enumeration; if successful, return the result and exit
- 6. If the original handler failed with any error code other than ERROR_NO_MORE_ITEMS, return the error code and exit
- 7. Calculate a new enumeration index by subtracting the enumeration index from the maximum value index
- 8. Call the original handler with the parallel key and the new enumeration index; return the result and exit
- 9. Call the original handler to perform the enumeration; if successful, return the result and exit
- 10. If the original handler failed with any error code other than ERROR—NO_MORE_ITEMS, return the error code and exit
- 11. Open the path to the key in the emulation registry
- 12. If unsuccessful, exit with the code ERROR_NO_MORE_ITEMS
- 13. The key opened in line 11 is now the parallel key; store it in the key list
- 14. The enumeration index is now the maximum value index; store it in the key list
- 15. Call the original handler with the parallel key and enumeration index 0; return the result and exit
- This service accepts the handle of an already-open registry key and an enumeration index, and returns information about the key.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. If the key is a pure emulation key, call the original handler; exit
- 4. Call the original handler; if unsuccessful, return the error code and exit
- 5. Open the path to the key in the emulation registry
- 6. If unsuccessful, return the results of the call in step 4; exit
- 7. Use the key opened in step 5, and call the original handler
- 8. Calculate the combined results for the following parameters: lpcSubKeys, lpcchMaxSubKey, lpcValues, lpcchMaxValueName, lpcbMaxValueData (as specified in the Platform SDK documentation); for each parameter in the list calculate the maximum of the two results (from steps 4 and 7)
- 9. Close the key opened in step 5
- 10. Return the combined results (as calculated in line 8) and exit
- This appendix provides a brief description of each of the hooked services provided by the spy process of
FIG. 4 , followed by a pseudocode listing of the function for emulation of the service. Although the spy process hooks some of the same VMM services as the emulation process, it responds to them differently, as detailed below. - This service accepts the handle of an already-open registry key and the path to a subkey. The service attempts to open a new key under the existing key using the given path. If successful, a new handle is assigned to the newly open registry key.
-
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. Use the original handler to open the required path
- 4. If successful, add the new key to the list
- 5. Return the error code from the original handler and exit
- This service accepts the handle of an already-open registry key and closes it.
-
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. Call the original handler to close the handle
- 4. Remove the key from the list
- This service accepts the handle of an already-open registry key and the path to a new subkey. It creates the new subkey.
-
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. Call the original handler to create the new key
- 4. Add the newly created key to the key list
- 5. Exit
- This service accepts the handle of an already-open registry key, the name of a new subkey and a string value. It creates the subkey under the existing key and sets its default value to the given string.
-
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. Open the path to the key in the emulation branch
- 4. If unsuccessful, create the existing key in the emulation branch
- 5. Call the original handler to set the value under the newly-opened/created key in the emulation branch
- 6. Call the original handler again to set the value, this time under the original existing key
- 7. Return the result of the call in step 6 and exit
- This service accepts the handle of an already-open registry key, the name of a value, and the type, size and the content of the value. It sets the value accordingly, creating it if necessary.
- 1. Find the key in the key list
- 2. If the key was not found, call the original handler; exit
- 3. Open the path to the key in the emulation branch
- 4. If unsuccessful, create the existing key in the emulation branch
- 5. Call the original handler to set the value under the newly-opened/created key in the emulation branch
- 6. Call the original handler again to set the value, this time under the original existing key
- 7. Return the result of the call in step 6 and exit
Claims (54)
1. (canceled)
2. A method for intercepting and servicing selected requests of a software application running on a computer that uses an operating system and a local database to maintain configuration data to be accessed by programs running on the computer, without installation of the software application on the computer, which configuration data would normally include further configuration data of the software application, the method comprising:
providing one or more data repositories containing the further configuration data, not stored in the local database, comprising one or more registry keys;
combining the one or more data repositories with the local database;
intercepting selected requests of the software application; and
servicing the selected requests of the software application using the further configuration data provided in the one or more data repositories, so as to retrieve the further configuration data while running the software application.
3. The method of claim 2 , further comprising receiving at least one of the one or more data repositories and the software application by download over a network to run on the computer.
4. The method of claim 2 , wherein accessing the further configuration data comprises providing the further configuration data from the one or more data repositories in a manner that emulates access by the operating system to the local database, whereby the further configuration data are accessed in a manner transparent to the software application.
5. The method of claim 2 , wherein the operating system comprises a Windows operating system, and the local database comprises a Windows registry.
6. The method of claim 2 , wherein providing the one or more data repositories comprises collecting the further configuration data responsive to installation of the software application and/or operation of the software application.
7. The method of claim 2 , wherein the step of servicing the selected requests of the software application further comprises changing a value in the one or more data repositories.
8. The method of claim 7 , wherein upon termination of the running of the software application the one or more data repositories are saved, and the computer returns to its previous configuration as given by its local database.
9. The method of claim 2 wherein the servicing step includes using an original handler to service one or more of the registry keys.
10. A method for generating one or more data repositories for use in running a software application on a computer under an operating system that uses a local database containing configuration data to be accessed by programs running on the computer, which configuration data would normally include further configuration data of the software application, the method comprising:
performing at least one of installing and operating the software application;
monitoring and recording local database accesses by the software application; and
writing at least one configuration data element generated during at least one of installation and operation to one or more data repositories.
11. The method of claim 10 , wherein the operating system comprises a Windows operating system, and the local database of the computer comprises a Windows registry, and wherein monitoring and recording local database accesses comprises hooking a registry service request to intercept selected requests made by the software application during at least one of installation and operation.
12. The method of claim 11 , wherein monitoring and recording local database accesses comprises hooking registry service requests to intercept all request made by the software application.
13. The method of claim 10 , further comprising:
combining the one or more data repositories with the local database, thereby allowing requests of the software application running on the computer to be selectively intercepted and serviced using the registry data from the one or more data repositories and allowing operation of the software application on the computer without installation.
14. The method of claim 10 wherein the configuration data comprises one or more registry keys.
15. The method of claim 10 further comprising the steps of:
writing the at least one registry data generated during at least one of installation and operation to both a location intended by the software application itself, and to a corresponding location in an emulation branch; and
saving the emulation branch to the one or more data repositories.
16. The method of claim 10 , wherein the operating system comprises a Windows operating system, and the database of the computer comprises a Windows registry, and wherein monitoring and recording local database accesses comprises customizing the local database to intercept and identify selected requests made by the software application during at least one of installation and operation.
17. A computer apparatus having an operating system that comprises a local database containing configuration data to be accessed by programs running on the computer apparatus, which computer apparatus is adapted to utilize one or more data repositories containing further configuration data required by a software application, the further configuration data not stored in the local database comprising one or more registry keys, the one or more data repositories combined with the local database, the computer apparatus adapted to run the software application under the operating system by intercepting selected requests made by the software application to access the local database and to service the request with items of the further configuration data from the one or more data repositories to the software application.
18. The computer apparatus of claim 17 , wherein the computer apparatus is adapted to intercept all requests made by the software application to access the local database.
19. The computer apparatus of claim 17 , wherein the operating system comprises a Windows operating system, and the local database comprises a Windows registry.
20. The computer apparatus of claim 17 , wherein the further configuration data comprises data that would normally be written to the local database in the course of at least one of installation and operation of the software application on the computer apparatus, and wherein the computer apparatus is adapted to run the software application substantially without installation, by using the further configuration data in the one or more data repositories.
21. The computer apparatus of claim 17 , wherein the software application changes one or more values in the one or more data repositories, while the software application is running.
22. The computer apparatus of claim 21 , wherein upon termination of the running of the software application the one or more data repositories are saved, and the computer apparatus returns to its previous configuration as given by its local database.
23. A computer apparatus for running a software application under an operating system that uses a local database containing configuration data to be accessed by programs running on the computer, which configuration data would normally include data generated during at least one of installation and operation of the software application on the computer apparatus, which computer apparatus is adapted to utilize one or more data repositories containing further configuration data of the software application, the further configuration data not stored in the local database comprising one or more registry keys, the one or more data repositories combined with the local database, the computer apparatus adapted to run the software application without the installation of the software application on the computer apparatus by intercepting and servicing selected requests for the further configuration data from the one or more data repositories instead of accessing the local database.
24. The computer apparatus of claim 23 , which is coupled to receive the one or more data repositories and the software application by download over a network, to run on the computer apparatus.
25. The computer apparatus of claim 23 , wherein the operating system comprises a Windows operating system, and the local database comprises a Windows registry.
26. An apparatus for generating one or more data repositories for use in running a software application on a user computer under an operating system that uses a local database containing configuration data to be accessed by programs running on the user computer, which configuration data would normally include data generated during at least one of installation and operation of the software application on the user computer, the apparatus comprising:
a computer on which the software application is installed, which computer is adapted to monitor and record local database accesses by the software application, and to write registry data generated during at least one of installation and operation to the one or more data repositories.
27. A computer software product for enabling a software application to run on a computer having an operating system that uses a local database containing configuration data to be accessed by programs running on the computer, the computer software product comprising a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause the computer to receive one or more data repositories containing further configuration data for the software application, required by the software application, the further configuration data not stored in the local database comprising one or more registry keys, the one or more data repositories combined with the local database, which instructions cause the computer to intercept selected requests by the software application to access the local database, so as to service the selected requests with an item of the further configuration data, responsive to the selected requests.
28. The computer software product of claim 27 , wherein the instructions cause the computer to intercept all requests by the software application to access the local database
29. The computer software product of claim 27 , wherein the operating system comprises a Windows operating system, and the local database comprises a Windows registry, and wherein the selected requests intercepted by the computer comprises a registry service request, which is hooked by the computer so as to identify one of the keys in the selected requests and to process the selected requests responsive to the identified key.
30. A computer software product for enabling a software application to run on a computer without installation of the software application on the computer, under an operating system that uses a local database containing configuration data to be accessed by programs running on the computer, which configuration data would normally include further configuration data generated during at least one of installation and operation of the software application on the computer, the computer software product comprising a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause registry requests of the software application to be selectively intercepted and serviced from one or more data repositories containing the further configuration data, the further configuration data not stored in the local database comprising one or more registry keys, the one or more data repositories combined with the local database, which instructions cause the computer to access the further configuration data in the one or more data repositories instead of accessing the local database so as to retrieve the further configuration data while running the software application.
31. The computer software product of claim 30 , wherein the operating system comprises a Windows operating system, and the local database comprises a Windows registry.
32. The computer software product of claim 31 , wherein the software application changes a value in the one or more data repositories.
33. The computer software product of claim 32 , wherein upon termination of the running of the software application the one or more data repositories are saved, and the computer returns to its previous configuration as given by its local database.
34. A computer software product for generating one or more data repositories for use in running a software application on a user computer under an operating system that uses a local database containing configuration data to be accessed by programs running under the operating system, which configuration data would normally include data generated during at least one of installation and operation of the software application, the product comprising:
a computer-readable medium in which program instructions are stored, which instructions, when read by a computer, cause the computer to monitor and record local database accesses by the software application, and to write registry data generated during at least one of installation and operation to the one or more data repositories.
35. A method for running a software application on a computer having an operating system that uses a local database containing configuration data to be accessed by programs running on the computer, the method comprising:
providing one or more data repositories containing further configuration data of the software application required by the software application, the further configuration data not stored in the local database comprising one or more registry keys;
combining the one or more data repositories with the local database;
intercepting selected requests by the software application to access the local database; and
servicing the selected requests of the software application with an item of the further configuration data from the one or more data repositories, responsive to the selected requests.
36. The method of claim 35 , wherein intercepting comprises intercepting all requests by the software application to access the local database.
37. The method of claim 35 , wherein the local database comprises a hierarchical database having a tree structure that comprises a plurality of branches, and wherein providing the one or more data repositories comprises providing data corresponding to one or more branches of the tree structure that are used by the software application.
38. The method of claim 37 , wherein the operating system comprises a Windows operating system, and the local database comprises a Windows registry.
39. The method of claim 38 , wherein intercepting the selected requests comprises hooking a registry service request.
40. The method of claim 39 , wherein hooking the registry service request comprises identifying one of the keys in the request, and processing the request responsive to the identified key.
41. The method of claim 38 , wherein providing the one or more data repositories comprises loading the further configuration data from the one or more data repositories into the local database before running the software application.
42. The method of claim 41 , wherein upon termination of the running of the software application the one or more data repositories are saved, and the computer returns to its previous configuration.
43. The method of claim 37 , wherein intercepting the selected requests comprises making a determination whether the selected requests relates to one of the branches that contains only the further configuration data, or whether the selected requests relates to another of the branches that is shared with the local database, and processing the selected requests responsive to the determination.
44. The method of claim 35 , wherein intercepting the request by the software application comprises receiving a request to alter the further configuration data, and comprising altering the further configuration data in the one or more data repositories responsive to the selected requests.
45. The method of claim 44 , further comprising saving the one or more data repositories including the altered further configuration data upon termination of the software application, to be used in running the software application subsequently.
46. The method of claim 35 , wherein returning the item of the further configuration data comprises emulating access by the operating system to the local database, so that the selected requests is handled in a manner transparent to the software application.
47. The method of claim 35 , wherein the further configuration data comprise data that would normally be written to the local database in the course of at least one of installation and operation of the software application on the computer, and wherein running the software application comprises running the software application substantially without installation on the computer, by using the further configuration data in the one or more data repositories.
48. A method for intercepting and servicing requests of a software application running on a computer that uses an operating system and a local database to maintain configuration data to be accessed by programs running on the computer, without installation of the software application on the computer, which configuration data would normally include further configuration data of the software application generated during at least one of the installation and operation of the software application on the computer, the method comprising:
providing one or more data repositories containing the further configuration data, not stored in the local database, comprising one or more registry keys;
intercepting selected requests of the software application; and
servicing the selected requests of the software application using the further configuration data provided in the one or more data repositories instead of accessing the local database, so as to retrieve the further configuration data while running the software application.
49. The method of claim 48 , wherein intercepting comprises intercepting all requests of the software application.
50. A method for intercepting and servicing requests of a software application running on a computer that uses an operating system and a local database to maintain configuration data to be accessed by programs running on the computer, without installation of the software application on the computer, which configuration data would normally include further configuration data of the software application generated during at least one of the installation and operation of the software application on the computer, the method comprising:
providing one or more data repositories containing the further configuration data, not stored in the local database;
intercepting selected requests of the software application;
identifying the selected requests as a request for one or more elements from the further configuration data;
combining the one or more elements from the further configuration data with the local database; and
servicing the selected requests of the software application using the further configuration data.
51. The method of claim 50 , wherein intercepting comprises intercepting all requests of the software application.
52. The method of claim 50 , wherein intercepting the request by the software application comprises receiving a request to alter the further configuration data, and wherein servicing the request comprises altering the further configuration data in at least one of the one or more data repositories and the local database.
53. The method of claim 52 , further comprising saving the one or more data repositories including the altered further configuration data.
54. The method of claim 50 , further comprising removing from the local database, during or after the application termination, at least one element of the further configuration data that was combined with the local database.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/177,305 US7607127B2 (en) | 2000-03-09 | 2005-07-11 | Registry emulation |
US12/581,671 US8533705B2 (en) | 2000-03-09 | 2009-10-19 | Registry emulation |
US14/022,930 US9405777B2 (en) | 2000-03-09 | 2013-09-10 | Registry emulation |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18815500P | 2000-03-09 | 2000-03-09 | |
US09/528,582 US6779179B1 (en) | 2000-03-20 | 2000-03-20 | Registry emulation |
US10/645,902 US20040045016A1 (en) | 2000-03-09 | 2003-08-22 | Registry emulation |
US11/177,305 US7607127B2 (en) | 2000-03-09 | 2005-07-11 | Registry emulation |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/645,902 Continuation US20040045016A1 (en) | 2000-03-09 | 2003-08-22 | Registry emulation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/581,671 Continuation US8533705B2 (en) | 2000-03-09 | 2009-10-19 | Registry emulation |
Publications (2)
Publication Number | Publication Date |
---|---|
US20050246704A1 true US20050246704A1 (en) | 2005-11-03 |
US7607127B2 US7607127B2 (en) | 2009-10-20 |
Family
ID=26883780
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/645,902 Abandoned US20040045016A1 (en) | 2000-03-09 | 2003-08-22 | Registry emulation |
US11/177,305 Expired - Fee Related US7607127B2 (en) | 2000-03-09 | 2005-07-11 | Registry emulation |
US12/581,671 Expired - Fee Related US8533705B2 (en) | 2000-03-09 | 2009-10-19 | Registry emulation |
US14/022,930 Expired - Fee Related US9405777B2 (en) | 2000-03-09 | 2013-09-10 | Registry emulation |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/645,902 Abandoned US20040045016A1 (en) | 2000-03-09 | 2003-08-22 | Registry emulation |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/581,671 Expired - Fee Related US8533705B2 (en) | 2000-03-09 | 2009-10-19 | Registry emulation |
US14/022,930 Expired - Fee Related US9405777B2 (en) | 2000-03-09 | 2013-09-10 | Registry emulation |
Country Status (3)
Country | Link |
---|---|
US (4) | US20040045016A1 (en) |
AU (1) | AU2001243502A1 (en) |
WO (1) | WO2001067379A2 (en) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060070029A1 (en) * | 2004-09-30 | 2006-03-30 | Citrix Systems, Inc. | Method and apparatus for providing file-type associations to multiple applications |
US20060075381A1 (en) * | 2004-09-30 | 2006-04-06 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US20060074989A1 (en) * | 2004-09-30 | 2006-04-06 | Laborczfalvi Lee G | Method and apparatus for virtualizing object names |
US20070083620A1 (en) * | 2005-10-07 | 2007-04-12 | Pedersen Bradley J | Methods for selecting between a predetermined number of execution methods for an application program |
US20080098309A1 (en) * | 2006-10-24 | 2008-04-24 | Microsoft Corporation | Managing virtual machines and hosts by property |
US20080109466A1 (en) * | 2006-11-02 | 2008-05-08 | Microsoft Corporation | Virtual Deletion In Merged Registry keys |
US7496594B1 (en) * | 2005-06-08 | 2009-02-24 | Unisys Corporation | User interface for displaying a hierarchical structure of a computer system |
US20100138844A1 (en) * | 2008-10-29 | 2010-06-03 | Michael Mager | Flexible hierarchical settings registry for operating systems |
US7779034B2 (en) | 2005-10-07 | 2010-08-17 | Citrix Systems, Inc. | Method and system for accessing a remote file in a directory structure associated with an application program executing locally |
US7890925B1 (en) * | 2007-04-05 | 2011-02-15 | Nvidia Corporation | Automatic generation of custom driver packages |
US8090797B2 (en) | 2009-05-02 | 2012-01-03 | Citrix Systems, Inc. | Methods and systems for launching applications into existing isolation environments |
US8095940B2 (en) | 2005-09-19 | 2012-01-10 | Citrix Systems, Inc. | Method and system for locating and accessing resources |
US8117559B2 (en) | 2004-09-30 | 2012-02-14 | Citrix Systems, Inc. | Method and apparatus for virtualizing window information |
US8131825B2 (en) | 2005-10-07 | 2012-03-06 | Citrix Systems, Inc. | Method and a system for responding locally to requests for file metadata associated with files stored remotely |
US8171479B2 (en) | 2004-09-30 | 2012-05-01 | Citrix Systems, Inc. | Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers |
US8171483B2 (en) | 2007-10-20 | 2012-05-01 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US20140304698A1 (en) * | 2012-06-18 | 2014-10-09 | Tellabs Operations, Inc. | Methods and Apparatus for Performing In-Service Software Upgrade for a Network Device Using System Virtulization |
US10348742B2 (en) * | 2008-03-18 | 2019-07-09 | Mcafee, Llc | System, method, and computer program product for dynamically configuring a virtual environment for identifying unwanted data |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001067379A2 (en) | 2000-03-09 | 2001-09-13 | Exent Technologies, Inc. | Registry emulation |
KR100504476B1 (en) * | 2002-10-30 | 2005-08-01 | 엘지전자 주식회사 | method and display system for controlling icon |
US7203696B2 (en) * | 2003-08-29 | 2007-04-10 | Microsoft Corporation | Dynamic registry partitioning |
US20060026414A1 (en) * | 2004-07-29 | 2006-02-02 | International Business Machines Corporation | Managing the environmental configuration for an application disposed in removable storage |
US20070083610A1 (en) * | 2005-10-07 | 2007-04-12 | Treder Terry N | Method and a system for accessing a plurality of files comprising an application program |
US20070089107A1 (en) * | 2005-10-10 | 2007-04-19 | Squires Steve | Database communication method |
US9405521B2 (en) * | 2006-06-29 | 2016-08-02 | Microsoft Technology Licensing, Llc | Mapping of virtualized setup-free applications for a computing system |
US7624129B2 (en) * | 2006-06-30 | 2009-11-24 | Microsoft Corporation | Dual logging of changes to a user preference in a computer device |
US7865878B2 (en) * | 2006-07-31 | 2011-01-04 | Sap Ag | Method and apparatus for operating enterprise software from a detachable storage device |
US20080127162A1 (en) * | 2006-11-29 | 2008-05-29 | Sap Ag | Method and apparatus for configuring application software |
US7792934B2 (en) * | 2008-01-02 | 2010-09-07 | Citrix Systems International Gmbh | Loading of server-stored user profile data |
US8776038B2 (en) * | 2008-08-07 | 2014-07-08 | Code Systems Corporation | Method and system for configuration of virtualized software applications |
US8434093B2 (en) | 2008-08-07 | 2013-04-30 | Code Systems Corporation | Method and system for virtualization of software applications |
US10089092B2 (en) * | 2010-01-27 | 2018-10-02 | Embarcadero Technologies, Inc. | Creating a software product from a software application |
US8954958B2 (en) | 2010-01-11 | 2015-02-10 | Code Systems Corporation | Method of configuring a virtual application |
US8959183B2 (en) | 2010-01-27 | 2015-02-17 | Code Systems Corporation | System for downloading and executing a virtual application |
US9104517B2 (en) | 2010-01-27 | 2015-08-11 | Code Systems Corporation | System for downloading and executing a virtual application |
US9229748B2 (en) | 2010-01-29 | 2016-01-05 | Code Systems Corporation | Method and system for improving startup performance and interoperability of a virtual application |
US8763009B2 (en) | 2010-04-17 | 2014-06-24 | Code Systems Corporation | Method of hosting a first application in a second application |
US9218359B2 (en) | 2010-07-02 | 2015-12-22 | Code Systems Corporation | Method and system for profiling virtual application resource utilization patterns by executing virtualized application |
US9021015B2 (en) | 2010-10-18 | 2015-04-28 | Code Systems Corporation | Method and system for publishing virtual applications to a web server |
US9209976B2 (en) | 2010-10-29 | 2015-12-08 | Code Systems Corporation | Method and system for restricting execution of virtual applications to a managed process environment |
CN102855144B (en) * | 2011-06-27 | 2016-04-20 | 北大方正集团有限公司 | For version disposal route and the device of single version software |
US8832296B2 (en) * | 2011-12-15 | 2014-09-09 | Microsoft Corporation | Fast application streaming using on-demand staging |
US8938550B2 (en) * | 2011-12-15 | 2015-01-20 | Microsoft Corporation | Autonomous network streaming |
EP2856754A4 (en) * | 2012-05-31 | 2016-01-20 | Intel Corp | Video post- processing on platforms without an interface to handle the video post-processing request from a video player |
US9729610B2 (en) | 2013-02-27 | 2017-08-08 | Greenbutton Limited | Method for intercepting an instruction produced by an application on a computer |
US10108408B2 (en) | 2014-06-26 | 2018-10-23 | Vmware, Inc. | Converting desktop applications into cloud services |
KR102372732B1 (en) * | 2016-01-18 | 2022-03-14 | 한국전자통신연구원 | Electronic device performing emulation-based forensic analysis and method of performing forensic analysis using the same |
CN106844581A (en) * | 2017-01-10 | 2017-06-13 | 山东华软金盾软件股份有限公司 | The simulation realizing method of registration table under a kind of Linux |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581768A (en) * | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
US5684996A (en) * | 1991-11-27 | 1997-11-04 | Icl Systems Ab | Method and arrangement for reducing the amount of information necessary for softway installation |
US5754817A (en) * | 1994-09-29 | 1998-05-19 | Intel Corporation | Execution in place of a file stored non-contiguously in a non-volatile memory |
US5787493A (en) * | 1992-09-25 | 1998-07-28 | International Business Machines Corporation | Control method and apparatus for direct execution of a program on an external apparatus using a randomly accessible and rewritable memory |
US5790809A (en) * | 1995-11-17 | 1998-08-04 | Mci Corporation | Registry communications middleware |
US5822784A (en) * | 1993-03-19 | 1998-10-13 | Intel Corporation | Mechanism supporting execute in place read only memory applications located on removable computer cards |
US5970252A (en) * | 1997-08-12 | 1999-10-19 | International Business Machines Corporation | Method and apparatus for loading components in a component system |
US5980078A (en) * | 1997-02-14 | 1999-11-09 | Fisher-Rosemount Systems, Inc. | Process control system including automatic sensing and automatic configuration of devices |
US6112324A (en) * | 1996-02-02 | 2000-08-29 | The Arizona Board Of Regents Acting On Behalf Of The University Of Arizona | Direct access compact disc, writing and reading method and device for same |
US6189139B1 (en) * | 1997-12-10 | 2001-02-13 | Ncr Corporation | INF development environment |
US6347398B1 (en) * | 1996-12-12 | 2002-02-12 | Microsoft Corporation | Automatic software downloading from a computer network |
US6374402B1 (en) * | 1998-11-16 | 2002-04-16 | Into Networks, Inc. | Method and apparatus for installation abstraction in a secure content delivery system |
US6418554B1 (en) * | 1998-09-21 | 2002-07-09 | Microsoft Corporation | Software implementation installer mechanism |
US6453334B1 (en) * | 1997-06-16 | 2002-09-17 | Streamtheory, Inc. | Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching |
US6779179B1 (en) * | 2000-03-20 | 2004-08-17 | Exent Technologies, Inc. | Registry emulation |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832511A (en) * | 1992-06-11 | 1998-11-03 | Beck Systems, Inc. | Workgroup network manager for controlling the operation of workstations within the computer network |
US6484309B2 (en) * | 1998-10-08 | 2002-11-19 | Intel Corporation | Enabling software designed for one operating system to operate on another operating system |
US6751658B1 (en) * | 1999-10-18 | 2004-06-15 | Apple Computer, Inc. | Providing a reliable operating system for clients of a net-booted environment |
WO2001067379A2 (en) | 2000-03-09 | 2001-09-13 | Exent Technologies, Inc. | Registry emulation |
-
2001
- 2001-03-08 WO PCT/US2001/007397 patent/WO2001067379A2/en active Application Filing
- 2001-03-08 AU AU2001243502A patent/AU2001243502A1/en not_active Abandoned
-
2003
- 2003-08-22 US US10/645,902 patent/US20040045016A1/en not_active Abandoned
-
2005
- 2005-07-11 US US11/177,305 patent/US7607127B2/en not_active Expired - Fee Related
-
2009
- 2009-10-19 US US12/581,671 patent/US8533705B2/en not_active Expired - Fee Related
-
2013
- 2013-09-10 US US14/022,930 patent/US9405777B2/en not_active Expired - Fee Related
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5684996A (en) * | 1991-11-27 | 1997-11-04 | Icl Systems Ab | Method and arrangement for reducing the amount of information necessary for softway installation |
US5787493A (en) * | 1992-09-25 | 1998-07-28 | International Business Machines Corporation | Control method and apparatus for direct execution of a program on an external apparatus using a randomly accessible and rewritable memory |
US5822784A (en) * | 1993-03-19 | 1998-10-13 | Intel Corporation | Mechanism supporting execute in place read only memory applications located on removable computer cards |
US5754817A (en) * | 1994-09-29 | 1998-05-19 | Intel Corporation | Execution in place of a file stored non-contiguously in a non-volatile memory |
US5581768A (en) * | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
US5790809A (en) * | 1995-11-17 | 1998-08-04 | Mci Corporation | Registry communications middleware |
US6112324A (en) * | 1996-02-02 | 2000-08-29 | The Arizona Board Of Regents Acting On Behalf Of The University Of Arizona | Direct access compact disc, writing and reading method and device for same |
US6347398B1 (en) * | 1996-12-12 | 2002-02-12 | Microsoft Corporation | Automatic software downloading from a computer network |
US5980078A (en) * | 1997-02-14 | 1999-11-09 | Fisher-Rosemount Systems, Inc. | Process control system including automatic sensing and automatic configuration of devices |
US6453334B1 (en) * | 1997-06-16 | 2002-09-17 | Streamtheory, Inc. | Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching |
US5970252A (en) * | 1997-08-12 | 1999-10-19 | International Business Machines Corporation | Method and apparatus for loading components in a component system |
US6189139B1 (en) * | 1997-12-10 | 2001-02-13 | Ncr Corporation | INF development environment |
US6418554B1 (en) * | 1998-09-21 | 2002-07-09 | Microsoft Corporation | Software implementation installer mechanism |
US6374402B1 (en) * | 1998-11-16 | 2002-04-16 | Into Networks, Inc. | Method and apparatus for installation abstraction in a secure content delivery system |
US6779179B1 (en) * | 2000-03-20 | 2004-08-17 | Exent Technologies, Inc. | Registry emulation |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352964B2 (en) | 2004-09-30 | 2013-01-08 | Citrix Systems, Inc. | Method and apparatus for moving processes between isolation environments |
US7680758B2 (en) | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US20060074989A1 (en) * | 2004-09-30 | 2006-04-06 | Laborczfalvi Lee G | Method and apparatus for virtualizing object names |
US20070067255A1 (en) * | 2004-09-30 | 2007-03-22 | Bissett Nicholas A | Method and system for accessing resources |
US20060070029A1 (en) * | 2004-09-30 | 2006-03-30 | Citrix Systems, Inc. | Method and apparatus for providing file-type associations to multiple applications |
US8117559B2 (en) | 2004-09-30 | 2012-02-14 | Citrix Systems, Inc. | Method and apparatus for virtualizing window information |
US8302101B2 (en) | 2004-09-30 | 2012-10-30 | Citrix Systems, Inc. | Methods and systems for accessing, by application programs, resources provided by an operating system |
US7853947B2 (en) | 2004-09-30 | 2010-12-14 | Citrix Systems, Inc. | System for virtualizing access to named system objects using rule action associated with request |
US8171479B2 (en) | 2004-09-30 | 2012-05-01 | Citrix Systems, Inc. | Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers |
US7676813B2 (en) | 2004-09-30 | 2010-03-09 | Citrix Systems, Inc. | Method and system for accessing resources |
US8042120B2 (en) | 2004-09-30 | 2011-10-18 | Citrix Systems, Inc. | Method and apparatus for moving processes between isolation environments |
US8132176B2 (en) | 2004-09-30 | 2012-03-06 | Citrix Systems, Inc. | Method for accessing, by application programs, resources residing inside an application isolation scope |
US7752600B2 (en) | 2004-09-30 | 2010-07-06 | Citrix Systems, Inc. | Method and apparatus for providing file-type associations to multiple applications |
US20060075381A1 (en) * | 2004-09-30 | 2006-04-06 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US7496594B1 (en) * | 2005-06-08 | 2009-02-24 | Unisys Corporation | User interface for displaying a hierarchical structure of a computer system |
US8095940B2 (en) | 2005-09-19 | 2012-01-10 | Citrix Systems, Inc. | Method and system for locating and accessing resources |
US7779034B2 (en) | 2005-10-07 | 2010-08-17 | Citrix Systems, Inc. | Method and system for accessing a remote file in a directory structure associated with an application program executing locally |
US8131825B2 (en) | 2005-10-07 | 2012-03-06 | Citrix Systems, Inc. | Method and a system for responding locally to requests for file metadata associated with files stored remotely |
US20070083620A1 (en) * | 2005-10-07 | 2007-04-12 | Pedersen Bradley J | Methods for selecting between a predetermined number of execution methods for an application program |
US20080098309A1 (en) * | 2006-10-24 | 2008-04-24 | Microsoft Corporation | Managing virtual machines and hosts by property |
US20080109466A1 (en) * | 2006-11-02 | 2008-05-08 | Microsoft Corporation | Virtual Deletion In Merged Registry keys |
EP2078246A4 (en) * | 2006-11-02 | 2011-03-30 | Microsoft Corp | Virtual deletion in merged registry keys |
EP2078246A1 (en) * | 2006-11-02 | 2009-07-15 | Microsoft Corporation | Virtual deletion in merged registry keys |
US7890925B1 (en) * | 2007-04-05 | 2011-02-15 | Nvidia Corporation | Automatic generation of custom driver packages |
US9009721B2 (en) | 2007-10-20 | 2015-04-14 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US8171483B2 (en) | 2007-10-20 | 2012-05-01 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US9009720B2 (en) | 2007-10-20 | 2015-04-14 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US9021494B2 (en) | 2007-10-20 | 2015-04-28 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US10348742B2 (en) * | 2008-03-18 | 2019-07-09 | Mcafee, Llc | System, method, and computer program product for dynamically configuring a virtual environment for identifying unwanted data |
US11575689B2 (en) * | 2008-03-18 | 2023-02-07 | Mcafee, Llc | System, method, and computer program product for dynamically configuring a virtual environment for identifying unwanted data |
US20100138844A1 (en) * | 2008-10-29 | 2010-06-03 | Michael Mager | Flexible hierarchical settings registry for operating systems |
KR101359126B1 (en) * | 2008-10-29 | 2014-02-06 | 퀄컴 인코포레이티드 | Flexible hierarchical settings registry for operating systems |
US8667512B2 (en) * | 2008-10-29 | 2014-03-04 | Qualcomm Incorporated | Flexible hierarchical settings registry for operating systems |
US8326943B2 (en) | 2009-05-02 | 2012-12-04 | Citrix Systems, Inc. | Methods and systems for launching applications into existing isolation environments |
US8090797B2 (en) | 2009-05-02 | 2012-01-03 | Citrix Systems, Inc. | Methods and systems for launching applications into existing isolation environments |
US20140304698A1 (en) * | 2012-06-18 | 2014-10-09 | Tellabs Operations, Inc. | Methods and Apparatus for Performing In-Service Software Upgrade for a Network Device Using System Virtulization |
US9830143B2 (en) * | 2012-06-18 | 2017-11-28 | Tellabs Operations, Inc. | Methods and apparatus for performing in-service software upgrade for a network device using system virtulization |
Also Published As
Publication number | Publication date |
---|---|
AU2001243502A1 (en) | 2001-09-17 |
US20140082027A1 (en) | 2014-03-20 |
WO2001067379A3 (en) | 2003-02-20 |
US20100037218A1 (en) | 2010-02-11 |
US9405777B2 (en) | 2016-08-02 |
US20040045016A1 (en) | 2004-03-04 |
US8533705B2 (en) | 2013-09-10 |
WO2001067379A2 (en) | 2001-09-13 |
US7607127B2 (en) | 2009-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7607127B2 (en) | Registry emulation | |
US6779179B1 (en) | Registry emulation | |
US10866813B2 (en) | Linking virtualized application namespaces at runtime | |
KR101533901B1 (en) | Networked recovery system | |
US5812848A (en) | Subclassing system for computer that operates with portable-executable (PE) modules | |
US6922827B2 (en) | Iterative software development environment with prioritized build rules | |
US6826750B1 (en) | Method of automatically selecting program and data updates based upon versions | |
US5966540A (en) | Hosted machine code installation | |
US7162724B2 (en) | Layered computing systems and methods | |
US7519963B1 (en) | Layered computing systems and methods with location exclusions | |
US5842024A (en) | Method of software installation | |
CN109614165B (en) | Multi-version parallel operation method and device for COM (component object model) component | |
US5903753A (en) | Name space registry with backward compatibility for older applications | |
US6637025B1 (en) | Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file | |
US7543301B2 (en) | Shared queues in shared object space | |
US20110072424A1 (en) | System for creating virtual application, method for installing virtual application, method for calling native api and method for executing virtual application | |
US20040148367A1 (en) | Method for integration edition of setting file and setting file integration base | |
US20110010700A1 (en) | Virtualization of configuration settings | |
US20030005168A1 (en) | System and method for auditing system call events with system call wrappers | |
US8825909B1 (en) | Application directed dynamic driver substitution | |
US20040226009A1 (en) | System and method for software application task abstraction | |
US8276141B2 (en) | Selection of transaction managers based on transaction metadata | |
US7503002B2 (en) | Text based markup language resource interface | |
US20140067904A1 (en) | Selection of transaction managers based on runtime data | |
CN114756290A (en) | Operating system installation method, device and readable storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: EXENT TECHNOLOGIES, LTD., ISRAEL Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ROMM, AMNON;ELKONI, AVI;REEL/FRAME:022953/0930;SIGNING DATES FROM 20000423 TO 20000425 |
|
REMI | Maintenance fee reminder mailed | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
SULP | Surcharge for late payment | ||
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.) |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20171020 |