Abstract:
According to certain aspects, a method is disclosed for registry key management in a network. The method includes detecting registry keys stored in a registry of a plurality of client computing devices and storing on a remote database a copy of the registry keys. The remote database is in communication with each of the client computing devices. The method further includes tracking with a management module running on the client computing devices modifications made to the registry of the first client device. In addition, the method includes modifying the copy of the registry keys on the remote database to reflect the modifications to the registry of the first client computing device; detecting a rebuild operation of the first client computing device; and automatically reinstalling registry keys on the first client computing device based on the copy of the registry keys stored on the remote database.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application claims the benefit of priority under 35 U.S.C. §119(e) of U.S. Provisional Patent Application No. 61/364,971, filed on Jul. 16, 2010, and entitled “REGISTRY KEY FEDERATION SYSTEMS AND METHODS,” the disclosure of which is hereby incorporated by reference in its entirety. 
     
    
     BACKGROUND 
       [0002]    1. Field 
         [0003]    The present disclosure relates to maintaining configuration settings for a computer system and, in particular, to systems and methods for managing registry keys in a network environment. 
         [0004]    2. Description of the Related Art 
         [0005]    Certain operating systems, such as MICROSOFT WINDOWS, utilize a database that holds configuration settings used by the operating system. For instance, the database can include data files used to store the configuration settings and/or user profiles the operating system accesses to control hardware and software components installed on the computer. Loss of the registry can be catastrophic since few applications can function properly on the system hard disk without the user engaging in the time-consuming process of reinstalling the applications. 
         [0006]    For example, the WINDOWS operating system includes a registry that is organized into a tree-like folder structure. The highest-level logical section is often referred to as a “hive,” which further includes “keys” and “sub-keys.” Within these lower-level logical sections are stored actual data or information, referred to as “values,” which include specific settings used internally by the operating system. 
         [0007]    Registry keys can oftentimes be very lengthy, making manual entry difficult. Complicating the matter even further, when a client system crashes and must be rebuilt, a user is oftentimes required to remember which registry keys were installed prior to the crash and to manually reinstall such keys to the client system. As can be appreciated, not only can the rebuilding process be difficult and time intensive, a user may not be familiar with and/or know how to access all the registry keys that were previously present on the client system. 
       SUMMARY 
       [0008]    In view of the foregoing, a need exists for improved systems and methods for managing registry keys in a computing environment. For example, there is a need for improved systems for storing at a centralized, remote location copies of registry keys and/or for facilitating reinstallation of registry keys during the rebuilding of a client system. 
         [0009]    Certain embodiments of the invention are provided for registry key management. For instance, certain systems include a centralized database that tracks which registry keys are installed on a plurality of client systems in a network environment. In certain embodiments, registry key changes made on a client system are entered through a management user interface, which further records the registry key changes on the centralized database. In yet further embodiments, one or more application programming interfaces (APIs) can be used to discover which registry keys have already been installed on each of the client systems. 
         [0010]    In this manner, when one or more client systems is required to be rebuilt, the centralized database can provide an indication as to which registry keys, and their specific values, should be reinstalled on the client system(s). Moreover, such reinstallation can be performed even though the rebuilt client machine may include a new operating system. In addition, the centralized database allows for further processing of the registry keys, such as by replicating registry keys to different machines and/or applying registry key policies over groups of machines in the network. 
         [0011]    In certain embodiments, a method is disclosed for registry key management in a computer network. The method includes detecting registry keys stored in a registry of each of a plurality of client computing devices and storing on a remote database a copy of the registry keys, the remote database being in network communication with each of the plurality of client computing devices. The method further includes tracking with a management module executing on a first one of the plurality of client computing devices modifications made to the registry of the first client computing device. In addition, the method includes modifying the copy of the registry keys on the remote database to reflect said modifications to the registry of the first client computing device; detecting a rebuild operation of the first client computing device; and automatically reinstalling registry keys on the first client computing device based on the copy of the registry keys stored on the remote database. 
         [0012]    In certain embodiments, a system is disclosed for managing registry keys in a computer network. The system comprises a plurality of client computing devices each comprising a registry having a plurality of registry keys and at least one management server in network communication with the plurality of client computing devices, the at least one management server maintaining in a database an indication of the plurality of registry keys installed in each registry of the plurality of client computing devices. The method also includes a management module executing on a first one of the plurality of client computing devices, wherein the management module is configured to: automatically track modifications made to the registry of the first client computing device; and instruct the at least one management server to update the indication of the plurality of registry keys to reflect said modifications. 
         [0013]    In certain embodiments, a system is disclosed for managing registry keys in a computer network. The system comprises means for detecting registry keys stored in a registry of each of a plurality of client computing devices and means for storing a copy of the registry keys, said storing means being in network communication with each of the plurality of client computing devices. The system further includes means for tracking on a first one of the plurality of client computing devices modifications made to the registry of the first client computing device and means for modifying the copy of the registry keys on said storing means to reflect said modifications to the registry of the first client computing device. In addition, the system includes means for automatically reinstalling registry keys on the first client computing device based on the copy of the registry keys stored on said storing means. 
         [0014]    For purposes of summarizing the disclosure, certain aspects, advantages and novel features of the inventions have been described herein. It is to be understood that not necessarily all such advantages may be achieved in accordance with any particular embodiment of the invention. Thus, the inventions may be embodied or carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other advantages as may be taught or suggested herein. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0015]      FIG. 1  illustrates a block diagram of a system for managing registry keys according to certain embodiments of the invention. 
           [0016]      FIG. 2  illustrates a flow chart of an exemplary embodiment of a registry key management process usable by the system of  FIG. 1 . 
           [0017]      FIG. 3  illustrates a flow chart of an exemplary embodiment of another registry key management process usable by the system of  FIG. 1 . 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
       [0018]    As will be seen from the disclosure herein, certain systems and methods are provided for managing registry keys in a computing environment. For instance, certain embodiments of the invention include improved systems for storing copies of registry keys and/or for facilitating reinstallation of registry keys during the rebuilding of a client system. 
         [0019]    Certain inventive systems include a centralized, management database that tracks which registry keys are installed on a plurality of client systems in a network environment. In certain embodiments, changes made to any, or a select, registry key can performed through a management user interface, which further records the changes on the management database. In yet further embodiments, one or more APIs, scripts or other application processes can be used to discover which registry keys have already been stored on each of the client devices, and replicate the keys, or identification of such keys, to the management database. 
         [0020]    In certain embodiments, when one or more client systems is required to be rebuilt, the management database can provide an indication as to which registry keys, and their specific values, should be reinstalled on the client system(s). Moreover, such reinstallation can be performed even though the rebuilt client machine may include a new operating system. In addition, the management database allows for replication of registry keys to different machines and/or application of registry key policies over groups of machines. 
         [0021]    The features of the systems and methods will now be described with reference to the drawings summarized above. Throughout the drawings, reference numbers are re-used to indicate correspondence between referenced elements. The drawings, associated descriptions, and specific implementation are provided to illustrate embodiments of the invention and not to limit the scope of the disclosure. 
         [0022]      FIG. 1  illustrates a block diagram of a system  100  for managing registry keys according to certain embodiments of the invention. In certain embodiments, the system  100  facilitates the rebuilding of one or more client devices by maintaining a database of installed registry keys and/or indications of the registry keys on the client devices. 
         [0023]    As shown, the management system  100  comprises a plurality of client devices  102   a,    102   b  and  102   c  (individually and collectively “ 102 ”) that communicate with a management server  104  via a network  106 . Each of the client devices  102  comprises a computing device configured to manipulate, generate or otherwise process data. In certain embodiments, the client device  102  comprises a desktop computer. In other embodiments, the client device  102  can comprise a server, a workstation, a virtual machine, a laptop, a notebook, a personal computer, a smartphone, a PDA, combinations of the same or the like. 
         [0024]    In particular, the client devices  102  comprise one or more software applications executing thereon to interact with a user to process data and may include, for example, database applications (e.g., SQL applications), word processors, spreadsheets, financial applications, management applications, e-commerce applications, browsers, combinations of the same or the like. For example, in certain embodiments, the applications may comprise one or more of the following: MICROSOFT EXCHANGE, MICROSOFT SHAREPOINT, MICROSOFT SQL SERVER, ORACLE, MICROSOFT WORD and LOTUS NOTES. 
         [0025]    As shown, client device  102   a  further comprises a registry  108   a  with a plurality of registry keys  110   a,  client device  102   b  further comprises a registry  108   b  with a plurality of registry keys  110   b,  and client device  102   c  further comprises a registry  108   c  with a plurality of registry keys  110   c.  In certain embodiments of the invention, each of the client devices  102  comprises a MICROSOFT WINDOWS operating system, and the registry keys  110  enable the operating system to control hardware and software components installed on the client device  102 . In yet other embodiments, the client devices  102  may be associated with one or more other types of operating systems (e.g., UNIX), virtual machines, or the like. 
         [0026]    In addition, each of the client devices  102   a,    102   b  and  102   c  comprises, respectively, management modules  112   a,    112   b  and  112   c  (individually and collectively “ 112 ”). In certain embodiments, each management module  112  is configured or programmed to track, record and/or ingest registry keys and/or changes to registry keys on a specific client device  102  and to transmit information regarding the keys to the management server  104 . 
         [0027]    In certain embodiments, the management module  112  comprises and/or interacts with an interface through which the user enters changes to the registry  108 . For instance, the user interface may be part of a standard registry editor provided with an operating system. In yet other embodiments, the user interface can comprise a customized interface, such as a graphical user interface or window, through which the user requests the changes. Moreover, the management module  112  can comprise and/or communicate with one or more APIs that are configured to access the registry  108  and identify and/or ingest registry keys  110  stored therein. 
         [0028]    The management server  104  comprises one or more destination devices for storing configuration data relating to the client devices  102 . For instance, in certain embodiments, the management server  104  comprises and/or communicates with a plurality of storage devices in network communication with each other and coupled to the network  106 . In such embodiments, the management server  104  can comprise one or more storage manager devices and/or storage controller devices that direct the storage and retrieval of backup data, such as described in U.S. Pat. No. 7,389,311, issued Jun. 17, 2008, which is hereby incorporated herein by reference in its entirety to be considered part of this specification. 
         [0029]    In particular, the management server  104  includes a registry key database  114 , policies  116  and a translation module  118  that are usable to manage registry keys on the plurality of client devices  102 . In certain embodiments, the registry key database  114  maintains a copy of the registry keys  110  on the client devices  102 . For instance, the database  114  can communicate with the management module  112  to acquire a copy of each registry key  110  on each client device  112 . In one example, the database  114  stores only a single copy of a particular registry key  110  for multiple devices  102  in order to reduce duplicate storage of keys. In yet other embodiments, the database  114  does not include copies of registry keys  110  other than those keys that satisfy a predetermined criteria or policy. 
         [0030]    In yet other embodiments, the database  114  does not store a copy of the entire registry key  110 , but retains sufficient information to reinstall registry keys  110  to a particular client device  102  following a failure of the client device  102 . For instance, the database  114  can comprise an indication such as a table, list or other data structure of values and other information usable to replicate or reinstall the registry keys when needed. 
         [0031]    The management server  104  further comprises policies  116  for managing the registry keys  110  in the system  100 . For instance, the policies  116  may indicate to the management module  112  which types of registry keys  110  should have copies maintained in the database  114 . In yet other embodiments, the policies  116  can be applied to the stored registry keys in the database  114 . For instance, the policy  116  may dictate which registry keys  110  should be replicated to a specific group of client devices  102  and/or users. 
         [0032]    In certain circumstances, a client device  102  may undergo an operating system upgrade or change. In such situations, particular registry keys  110  used for a first operating system may not function within a second operating system. Thus, reinstalling registry keys  110  identified in the registry key database  114  to a client device  102  with a new operating system may trigger system errors or incompatibility issues. To assist with a transition between two operating systems, the translation module  118  of the management server  104  is configured to translate a registry key  110  compatible and/or associated with a format of a first operating system to a modified key compatible with a format of a second operating system. 
         [0033]    It will also be understood that the management server  104  can store other information not specifically illustrated in  FIG. 1 . For instance, the management server  104  may back up or control the backup of other data, such as, for example, configuration information, files, folders, or the like associated with the client devices  102 . 
         [0034]    The illustrated network  106  advantageously comprises any means for communicating data between two or more systems or components. It certain embodiments, the network  106  comprises a computer network. For example, the network  106  may comprise a public network such as the Internet, virtual private network (VPN), token ring or TCP/IP based network, wide area network (WAN), local area network (LAN), an intranet network, point-to-point link, a wireless network, cellular network, wireless data transmission system, two-way cable system, interactive kiosk network, satellite network, broadband network, baseband network, combinations of the same or the like. 
         [0035]      FIG. 2  illustrates a flow chart of an exemplary embodiment of a registry key management process  200 . In general, the process  200  advantageously facilitates the reinstallation of registry keys during the rebuilding of a client system, such as following a system failure, operating system upgrade or the like. For exemplary purposes, the process  200  will be described herein with reference to the components of the management system  100  of  FIG. 1 . 
         [0036]    The process  200  begins at Block  205  wherein the management module  112  detects the registry keys  110  installed on the client device  102 . As discussed above, in certain embodiments, such detection is performed using one or more APIs. In yet other embodiments, a snapshot or other copy can be generated of the registry  108  to identify the registry keys  110  stored thereon. 
         [0037]    At Block  210 , a copy of the registry keys  110  is stored on the database  114  of the management server  104 . In certain embodiments, a copy of the entire registry  108  is maintained in the database  114 . In yet other embodiments, only a select portion of the registry keys  110  is stored in the database  114 , such as based on one or more of the policies  116  and/or user preferences. 
         [0038]    The process  200  continues to monitor the registry  108  and/or client device  102  to track modifications made to the registry keys  110  (Block  215 ). For instance, the process  200  can include utilizing a user interface and/or software routine to capture user- and/or system-initiated modifications to the registry keys  110 . At Block  220 , the process  200  applies the tracked modifications to the corresponding copies of the registry keys  110  in the database  114 . In this manner, the database  114  maintains an up-to-date and synchronized record of the registry keys  110  and accompanying values stored on the client device  102 . 
         [0039]    At Block  225 , the process  200  detects a failure or other event associated with the client device  102  that requires rebuilding of the client device  102 , along with a reinstallation of at least a portion of the registry keys  110 . For instance, the management server  104  may receive a request to reinstall registry keys to the client device  102 . At Block  230 , the process completes by reinstalling from the remote database  114  the registry keys to the client device  102 . For instance, such reinstallation can be a copying of the registry keys stored in the database  114  when the database maintains full copies of the keys, or the reinstallation can include accessing one or more remote locations having copies of the registry keys  110  based on information stored in the database  114 . 
         [0040]    As can be seen, the process  200  advantageously provides for an expedited rebuilding of the failed client device  102  and reduces the chance of human error when compared to manual reinstallation of registry keys that were previously installed on the client device  102 . Moreover, with embodiments of the invention, the user does not need to remember which registry keys  110  were previously installed on the client device  102 . 
         [0041]    Although the process  200  has been described with reference to specific examples, other embodiments of the invention can vary from that which is illustrated in  FIG. 2 . For instance, with respect to Block  210 , the process  200  may not store copies of the registry keys  110  in the database  114  of the management server  104 . Rather, the database  114  can maintain an indication of, or other information regarding, which registry keys are stored on the various client devices  102 . Such information, such as identifiers, links or the like, can then be used to obtain copies of the registry keys  110  from another location when needed for reinstallation. 
         [0042]      FIG. 3  illustrates a flow chart of another embodiment of a management process  300  usable by the system  100  of  FIG. 1 . Like the process  200 , the management process  300  facilitates the reinstallation of registry keys when rebuilding a client device  102 . For exemplary purposes, the management process  300  will be described herein with reference to the components of the system  100  of  FIG. 1 . Moreover, steps or acts of the management process  300  that have been described previously with respect to the process  200  of  FIG. 2  will not necessarily be re-described in detail. 
         [0043]    The process  300  begins at Block  305  by storing a copy of the registry keys  110  of a client device  102  on the database  114  of the management server  104 , as discussed in more detail above. At Block  310 , the management server  104  is informed that the client device  102  is to be rebuilt. For instance, in certain embodiments, the management module  112  of the client device  102  instructs the management server  104  that registry keys  110  stored in the database  114  are to be reinstalled on the client device  102 . 
         [0044]    At Block  315 , the process  300  determines if rebuilding the client device  102  includes installing a different operating system than the operating system that was previously on the client device  102 . If not, the process  300  proceeds with installing the registry keys identified in the database  114  on the client device  102  (Block  325 ). 
         [0045]    If a different operating system is being installed on the client device  102 , the process  300  proceeds with Block  330  to determine which registry keys can be reinstalled on the client device  102 . For instance, the management server  104  may identify which of the stored registry keys in the database  114  are compatible with the new operating system. In yet further embodiments, the management server  104  can utilize the translation module  118  to convert one or more registry keys compatible with the previous operating system into a format compatible with the new operating system. 
         [0046]    At Block  330 , the process  300  determines if there are any policies  116  that apply to the client device  102 . For example, the management server  104  can determine if the client device  102  is part of a group for which one or more policies  116  dictates that certain registry keys are to be installed on devices within the group. For example, one of the policies  116  can indicate that a particular registry key  110  should be installed on all client devices within a particular group. 
         [0047]    If one or more policies applies to the rebuilt system, the management module  112  modifies the registry  108  of the client device  102  according to the applicable policy(ies) (Block  335 ). Following Block  335 , or if no policies  116  apply to the rebuilt device  102 , the process  300  continues with Block  340  to reboot the client device  102 . 
         [0048]    In certain embodiments of the invention, the registry management systems and methods may be used in connection with a modular storage management system, embodiments of which are described in more detail in U.S. Pat. No. 7,035,880, issued Apr. 5, 2006, which is hereby incorporated herein by reference in its entirety. For example, one or more client devices and/or management servers may be part of a storage operation cell that includes combinations of hardware and software components directed to performing storage operations on electronic data. Exemplary storage operation cells usable with embodiments of the invention include CommCells as embodied in the QNET storage management system and the QINETIX storage management system by CommVault Systems, Inc. (Oceanport, N.J.), and as further described in U.S. Pat. No. 7,454,569, issued Nov. 18, 2008, which is hereby incorporated herein by reference in its entirety. 
         [0049]    Systems and modules described herein may comprise software, firmware, hardware, or any combination(s) of software, firmware, or hardware suitable for the purposes described herein. Software and other modules may reside on servers, workstations, personal computers, computerized tablets, PDAs, and other devices suitable for the purposes described herein. Software and other modules may be accessible via local memory, via a network, via a browser, or via other means suitable for the purposes described herein. Data structures described herein may comprise computer files, variables, programming arrays, programming structures, or any electronic information storage schemes or methods, or any combinations thereof, suitable for the purposes described herein. User interface elements described herein may comprise elements from graphical user interfaces, command line interfaces, and other interfaces suitable for the purposes described herein. 
         [0050]    Embodiments of the invention are also described above with reference to flow chart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products. It will be understood that each block of the flow chart illustrations and/or block diagrams, and combinations of blocks in the flow chart illustrations and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the acts specified in the flow chart and/or block diagram block or blocks. 
         [0051]    These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to operate in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the acts specified in the flow chart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the acts specified in the flow chart and/or block diagram block or blocks. 
         [0052]    In addition, methods and functions described herein are not limited to any particular sequence, and the acts or blocks relating thereto can be performed in other sequences that are appropriate. For example, described acts or blocks may be performed in an order other than that specifically disclosed, or multiple acts or blocks may be combined in a single act or block. 
         [0053]    While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the disclosure. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the disclosure. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the disclosure.