C#操作注冊表學習

    今天偶然看見一篇有修改注冊表的文章,心中便想C#是否可以修改注冊表,於是自己便從網上找了一些文章學習。
雖然學的很淺,但自己又進步了!

首先了解下C#操作注冊表的類
(1).Registry类:此类主要封装了七个公有的静态域,而这些静态域分别代表这视窗注册表中的七个基本的主键,具体如下所示:
Registry.ClassesRoot     对应于HKEY_CLASSES_ROOT主键

Registry.CurrentUser 对应于HKEY_CURRENT_USER主键

Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键

Registry.User 对应于 HKEY_USER主键

Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键

Registry.DynDa 对应于HKEY_DYN_DATA主键

Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键
(2).RegistryKey类:此类中主要封装了对视窗系统注册表的基本操作。在程序设计中,首先通过Registry类找到注册表中的基本主键,然后通过RegistryKey类,来找其下面的子键和处理具体的操作的。

代碼:
       using Microsoft.Win32;

        ///   <summary>
        
/// 得到注冊表中的值
        
///   </summary>
        
///   <returns></returns>
         private   string  GetRegistData( )
        {
            
string  registData;
            RegistryKey hkml 
=  Registry.LocalMachine;
            RegistryKey RootFolder 
=  Registry.LocalMachine;
            RegistryKey system 
=  RootFolder.OpenSubKey( " system " , true );
            RegistryKey CurrentControlSet 
=  system.OpenSubKey( " CurrentControlSet " , true );
            RegistryKey Services 
=  CurrentControlSet.OpenSubKey( " Services " , true );
            RegistryKey Tcpip 
=  Services.OpenSubKey( " Tcpip " , true );
            RegistryKey Parameters 
=  Tcpip.OpenSubKey( " Parameters " , true );
            RegistryKey NetCardID 
=  Parameters.OpenSubKey( " Winsock " , true );    
            registData 
=  NetCardID.GetValue( " HelperDllName " " null " ).ToString();
            
return  registData;
        }
        
///   <summary>
        
///  創建注冊表值
        
///  本例為創建一個XX的子目錄,其創建一鍵為XXX,值為test
        
///   </summary>
         private   void  CreateRegistData()
        {            
            RegistryKey hkml 
=  Registry.LocalMachine;
            RegistryKey RootFolder 
=  Registry.LocalMachine;
            RegistryKey system 
=  RootFolder.OpenSubKey( " system " true );
            RegistryKey CurrentControlSet 
=  system.OpenSubKey( " CurrentControlSet " true );
            RegistryKey Services 
=  CurrentControlSet.OpenSubKey( " Services " true );
            RegistryKey Tcpip 
=  Services.OpenSubKey( " Tcpip " true );
            RegistryKey Parameters 
=  Tcpip.OpenSubKey( " Parameters " true );
            RegistryKey NetCardID 
=  Parameters.OpenSubKey( " Winsock " true );
            RegistryKey xxx
=  NetCardID.CreateSubKey( " xxx " );
            
// 384為十進制,Dword為16進制,系統將自動進行轉換,最終注冊表存入的值為180,180為384的16進制
            xxx.SetValue( " xxx " , 384 ,RegistryValueKind.DWord);    
        }

        
///   <summary>
        
///  刪除指的鍵
        
///   </summary>
         private   void  DeleteValueRegistData()
        {
            RegistryKey hkml 
=  Registry.LocalMachine;
            RegistryKey RootFolder 
=  Registry.LocalMachine;
            RegistryKey system 
=  RootFolder.OpenSubKey( " system " true );
            RegistryKey CurrentControlSet 
=  system.OpenSubKey( " CurrentControlSet " true );
            RegistryKey Services 
=  CurrentControlSet.OpenSubKey( " Services " true );
            RegistryKey Tcpip 
=  Services.OpenSubKey( " Tcpip " true );
            RegistryKey Parameters 
=  Tcpip.OpenSubKey( " Parameters " true );
            RegistryKey NetCardID 
=  Parameters.OpenSubKey( " Winsock " true );
            RegistryKey xxx 
=  NetCardID.OpenSubKey( " xxx " true );
            
string [] SubValue;
            SubValue 
=  xxx.GetValueNames();
            
foreach  ( string  sSubValue  in  SubValue)
            {
                
if  (sSubValue == " xxx " )
                {
                    xxx.DeleteValue(sSubValue);
                }
            }
        }
        
///   <summary>
        
///  刪除子目錄
        
///   </summary>
         private   void  DeleteSubRegistData()
        {
            RegistryKey hkml 
=  Registry.LocalMachine;
            RegistryKey RootFolder 
=  Registry.LocalMachine;
            RegistryKey system 
=  RootFolder.OpenSubKey( " system " true );
            RegistryKey CurrentControlSet 
=  system.OpenSubKey( " CurrentControlSet " true );
            RegistryKey Services 
=  CurrentControlSet.OpenSubKey( " Services " true );
            RegistryKey Tcpip 
=  Services.OpenSubKey( " Tcpip " true );
            RegistryKey Parameters 
=  Tcpip.OpenSubKey( " Parameters " true );
            RegistryKey NetCardID 
=  Parameters.OpenSubKey( " Winsock " true );
            
string [] SubValue;
            SubValue 
=  NetCardID.GetSubKeyNames();
            
foreach  ( string  sSubValue  in  SubValue)
            {               
                
if  (sSubValue  ==   " xxx " )
                {                    
                    NetCardID.DeleteSubKey (sSubValue);
                }
            }
        }

你可能感兴趣的:(C#)