注册表操作类

时间:2021-04-03 15:36:55

 

能实现添加、删除、判断是否存在等操作

操作根目录为HKEY_LOCAL_MACHINE\SOFTWARE下。 

 

using  System;   
using  System.Collections.Generic;   
using  Microsoft.Win32;   
  
namespace  ImageExpressTest   
{   
    
///   <summary>    
    
///  operate the Register   
    
///   </summary>    
     public   class  RegisterOperate   
    {   
        
///   <summary>    
        
///  Creates the subkey.   
        
///  location:HKEY_LOCAL_MACHINE\SOFTWARE   
        
///   </summary>    
        
///   <param name="strSubKey"> The STR sub key. </param>    
         public   static   void  CreateSubkey( string  strSubKey)   
        {   
            
try   
            {   
                RegistryKey hklm 
=  Registry.LocalMachine;   
                RegistryKey softWare 
=  hklm.OpenSubKey( " SOFTWARE " true );   
                softWare.CreateSubKey(strSubKey);   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Creates the subkey.   
        
///  location:HKEY_LOCAL_MACHINE\SOFTWARE\parentkey   
        
///   </summary>    
        
///   <param name="parentkey"> The parentkey. </param>    
        
///   <param name="subkey"> The subkey. </param>    
         public   static   void  CreateSubkey( string  strParentKey,  string  strSubKey)   
        {   
            
try   
            {   
                
// RegistryKey hklm = Registry.LocalMachine;   
                
// RegistryKey softWare = hklm.OpenSubKey("SOFTWARE", true);   
                 /// /RegistryKey parentKey = softWare.OpenSubKey(strParentKey);   
                RegistryKey parentKey  =  GetParentKey(strParentKey);   
                parentKey.CreateSubKey(strSubKey);   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Creates the subkey and set default value   
        
///  location:HKEY_LOCAL_MACHINE\SOFTWARE\parentkey   
        
///   </summary>    
        
///   <param name="strParentKey"> The parent key. </param>    
        
///   <param name="strSubKey"> The sub key. </param>    
        
///   <param name="strValue"> The value. </param>    
         public   static   void  CreateSubkey( string  strParentKey,  string  strSubKey,  string  strValue)   
        {   
            
try   
            {   
                
// RegistryKey hklm = Registry.LocalMachine;   
                
// RegistryKey softWare = hklm.OpenSubKey("SOFTWARE");   
                
// RegistryKey parentKey = softWare.OpenSubKey(strParentKeyName);   
                RegistryKey parentKey  =  GetParentKey(strParentKey);   
                RegistryKey subkey 
=  parentKey.CreateSubKey(strSubKey);   
                subkey.SetValue(
null , strValue);   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Sets the value.   
        
///  location:HKEY_LOCAL_MACHINE\SOFTWARE\parentkey   
        
///   </summary>    
        
///   <param name="strParentKeyName"> Name of the parent key. </param>    
        
///   <param name="strName"> Name. </param>    
        
///   <param name="strValue"> value. </param>    
         public   static   void  SetValue( string  strParentKey,  string  strName,  string  strValue)   
        {   
            
try   
            {   
                
// RegistryKey hklm = Registry.LocalMachine;   
                
// RegistryKey softWare = hklm.OpenSubKey("SOFTWARE");   
                
// RegistryKey parentKey = softWare.OpenSubKey(strParentKeyName);   
                RegistryKey parentKey  =  GetParentKey(strParentKey);   
                parentKey.SetValue(strName, strValue);   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Deletes the key where location is HKEY_LOCAL_MACHINE\SOFTWARE\"   
        
///   </summary>    
        
///   <param name="strKeyName"> Name of the key. </param>    
         public   static   void  DeleteKey( string  strKeyName)   
        {   
            
try   
            {   
                List
< string >  aKeys  =   new  List < string > ();   
                RegistryKey hklm 
=  Registry.LocalMachine;   
                RegistryKey softWare 
=  hklm.OpenSubKey( " SOFTWARE " true );   
                aKeys.AddRange(softWare.GetSubKeyNames());   
                
if  (aKeys.Contains(strKeyName))   
                {   
                    softWare.DeleteSubKeyTree(strKeyName);   
                }   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Deletes the key and his subkeys where    
        
///  location is HKEY_LOCAL_MACHINE\SOFTWARE\strParentKey".   
        
///   </summary>    
        
///   <param name="strParentKey"> The parent key. </param>    
        
///   <param name="strKeyName"> Name of the key. </param>    
         public   static   void  DeleteKey( string  strParentKey,  string  strKeyName)   
        {   
            
try   
            {   
                List
< string >  aKeys  =   new  List < string > ();   
                
// RegistryKey hklm = Registry.LocalMachine;   
                
// RegistryKey softWare = hklm.OpenSubKey("SOFTWARE");   
                
// RegistryKey parentKey = softWare.OpenSubKey(strParentKeyName);   
                RegistryKey parentKey  =  GetParentKey(strParentKey);   
                aKeys.AddRange(parentKey.GetSubKeyNames());   
                
if  (aKeys.Contains(strKeyName))   
                {   
                    parentKey.DeleteSubKeyTree(strKeyName);   
                }   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Determines whether the key named strKeyName is existed    
        
///   </summary>    
        
///   <param name="strKeyName"> Name of the key. </param>    
        
///   <returns>    
        
///       <c> true </c>  if key is existed; otherwise,  <c> false </c> .   
        
///   </returns>    
         public   static   bool  IsKeyExisted( string  strKeyName)   
        {   
            
try   
            {   
                List
< string >  aKeys  =   new  List < string > ();   
                RegistryKey hklm 
=  Registry.LocalMachine;   
                RegistryKey softWare 
=  hklm.OpenSubKey( " SOFTWARE " );   
                aKeys.AddRange(softWare.GetSubKeyNames());   
                
return  aKeys.Contains(strKeyName);   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Determines whether the key named strKeyName is existed   
        
///   </summary>    
        
///   <param name="strParentKeyName"> Name of the parent key. </param>    
        
///   <param name="strKeyName"> Name of the key. </param>    
        
///   <returns>    
        
///       <c> true </c>  if key is existed; otherwise,  <c> false </c> .   
        
///   </returns>    
         public   static   bool  IsKeyExisted( string  strParentKey,  string  strKeyName)   
        {   
            
try   
            {   
                List
< string >  aKeys  =   new  List < string > ();   
                
// RegistryKey hklm = Registry.LocalMachine;   
                
// RegistryKey softWare = hklm.OpenSubKey("SOFTWARE");   
                
// RegistryKey parentKey = softWare.OpenSubKey(strParentKeyName);   
                RegistryKey parentKey  =  GetParentKey(strParentKey);   
                aKeys.AddRange(parentKey.GetSubKeyNames());   
                
return  aKeys.Contains(strKeyName);   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }   
  
        
///   <summary>    
        
///  Gets the parent key.   
        
///   </summary>    
        
///   <param name="strParentKeyName"> Name of the parent key. </param>    
         private   static  RegistryKey GetParentKey( string  strParentKey)   
        {   
            
try   
            {   
                List
< string >  aKeysTree  =   new  List < string > ();   
                
char [] charSeparator  =   new   char []{ ' \\ ' };   
                aKeysTree.AddRange(strParentKey.Split(charSeparator,StringSplitOptions.RemoveEmptyEntries));   
                RegistryKey hklm 
=  Registry.LocalMachine;   
                RegistryKey softWare 
=  hklm.OpenSubKey( " SOFTWARE " );   
                RegistryKey parentKey 
=  softWare;   
                
foreach  ( string  str  in  aKeysTree)   
                {   
                    parentKey 
=  parentKey.OpenSubKey(str,  true );   
                }   
                
return  parentKey;   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
               
        }   
    }   
}  

 

 

测试类:

 

using  System;   
  
namespace  ImageExpressTest   
{   
    
///   <summary>    
    
///  Register ImageExpress component   
    
///   </summary>    
     public   static   class  RegisterImageExpress   
    {  
        
#region  const   
        
const   string  COMPANY  =   " AVIT Solutions     Apr. 11, 2002 " ;   
        
const   string  COPYRIGHT  =   " (c) 1998-2001 Pegasus Imaging Corp.  All Rights Reserved. " ;   
        
const   string  LICENSE  =   " Registered for use on a SINGLE computer to: " ;   
        
const   string  SERIAL  =   " FKDKGKJDMBOLKHLPIPJDDNJBMFLDJIPPFEBFEALOEDMLEP " ;   
        
const   string  USERNAME  =   " Your Company Name Here [reggie@avit.com.hk] " ;  
        
#endregion    
  
        
///   <summary>    
        
///  Register ImageExpress component.   
        
///   </summary>    
         public   static   void  Register()   
        {   
            
try   
            {   
                
if  ( ! RegisterOperate.IsKeyExisted( " Pegasus Software " ))    
                {   
                    RegisterOperate.CreateSubkey(
" Pegasus Software " );   
                    RegisterOperate.CreateSubkey(
" Pegasus Software " " ImagXpress v6.00 ActiveX Control " );   
                    RegisterOperate.SetValue(
" Pegasus Software\\ImagXpress v6.00 ActiveX Control\\ " , " DisplayName " , " D:\\PegasusSoftware\\ImagXpressv60 " );   
                    RegisterOperate.CreateSubkey(
" Pegasus Software\\ImagXpress v6.00 ActiveX Control\\ " " Company " , COMPANY);   
                    RegisterOperate.CreateSubkey(
" Pegasus Software\\ImagXpress v6.00 ActiveX Control\\ " " Copyright " , COPYRIGHT);   
                    RegisterOperate.CreateSubkey(
" Pegasus Software\\ImagXpress v6.00 ActiveX Control\\ " " License " , LICENSE);   
                    RegisterOperate.CreateSubkey(
" Pegasus Software\\ImagXpress v6.00 ActiveX Control\\ " " Serial " , SERIAL);   
                    RegisterOperate.CreateSubkey(
" Pegasus Software\\ImagXpress v6.00 ActiveX Control\\ " " UserName " , USERNAME);   
                }   
            }   
            
catch  (Exception ex)   
            {   
                
throw  ex;   
            }   
        }     
    }   
}