如何在C#中轻松操作注册表

Visual Studio .Net以前的版本,要对注册表进行修改,则需要调用系统API,而现在则不用那么麻烦,因为.Net已经把注册表相关的操作封装到一个类中,调用的时候只要只要调用此类对象相应的属性或方法即可。
 
以下就注册表这个类进行说明。
首先,要引入注册类所在的nampespace,如下:
 
接下来就是对注册表的操作,则第一步要像以前操作的那样,需要设定注册表的位置,例如:
    RegistryKey rkLocalM = Registry.LocalMachine;
 
而注册表各个根的具体对应如下:
HKEY_CLASSES_ROOT
ClassesRoot
HKEY_CURRENT_USER
CurrentUser
HKEY_LOCAL_MACHINE
LocalMachine
HKEY_USERS
Users
HKEY_CURRENT_CONFIG
CurrentConfig
HKEY_DYN_DATA
DynData
HKEY_PERFORMANCE_DATA
PerformanceData
 
然后,就用上面初始化后的对象,来操作注册表子键。
以下就举几个常用的用例。
第一,   枚举某个子键的所含子项以及子键的值;
            RegistryKey rkLocalM = Registry.LocalMachine;
            const string strSubKey = @"SOFTWARE/ODBC/ODBCINST.INI/Microsoft Access Driver (*.mdb)";
            RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey );
 
            // Get sub keys
            string[] strSubKeys = rkSub.GetSubKeyNames();
            for( int i = 0; i < strSubKeys.Length; i++ )
                Debug.WriteLine( strSubKeys[i] );
 
            // Get data name and its value
            string[] strData = rkSub.GetValueNames();
            for( int i = 0; i < strData.Length; i++ )
            {
                Debug.WriteLine( string.Format( "{0}:{1}", strData[i],
                    rkSub.GetValue( strData[i] ) ) );
            }
            rkLocalM.Close();
 
第二,   创建子项;
            RegistryKey rkLocalM = Registry.LocalMachine;
            const string strSubKey = @"SOFTWARE/ODBC/ODBCINST.INI/Microsoft Access Driver (*.mdb)";
            RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
             
              rkSub.SetValue( "Test", "Test" );//The type of value according value itself
            rkLocalM.Close();
 
第三,   删除子项;
            RegistryKey rkLocalM = Registry.LocalMachine;
            const string strSubKey = @"SOFTWARE/ODBC/ODBC.INI/DBNewTest";
            RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
            rkSub.DeleteValue( "DriverID", false );
            rkLocalM.Close();
 
第四,   添加某个子键的值;
            RegistryKey rkLocalM = Registry.LocalMachine;
            const string strSubKey = @"SOFTWARE/ODBC/ODBC.INI/DBNewTest/Test";
            RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey );
            rkLocalM.Close();
 
第五,   删除某个子键的值;
            RegistryKey rkLocalM = Registry.LocalMachine;
            const string strSubKey = @"SOFTWARE/ODBC/ODBC.INI/DBNewTest";
            RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
            rkSub.DeleteSubKey( "Test", false );
            rkLocalM.Close();
 
第六,   删除某个子键下所有子键和子项;
            RegistryKey rkLocalM = Registry.LocalMachine;
            const string strSubKey = @"SOFTWARE/ODBC/ODBC.INI";
            RegistryKey rkSub = rkLocalM.OpenSubKey( strSubKey, true );
            rkSub.DeleteSubKeyTree( "DBNewTest");
            rkLocalM.Close();
 
       其实用到最多的是OpenSubKey,要注意的是,如果要相对子键进行操作的话,一定要加上“true”这个值,以标明对当前打开的子键能具有可写的能力。否则,默认打开的方式,是不具有可写的能力,这样对待子项进行添加、删除以及修改等操作,会出现异常。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值