如何在C#中轻松操作注册表
2006-03-28 08:25
399 查看
Visual Studio .Net以前的版本,要对注册表进行修改,则需要调用系统API,而现在则不用那么麻烦,因为.Net已经把注册表相关的操作封装到一个类中,调用的时候只要只要调用此类对象相应的属性或方法即可。
以下就注册表这个类进行说明。
首先,要引入注册类所在的nampespace,如下:
接下来就是对注册表的操作,则第一步要像以前操作的那样,需要设定注册表的位置,例如:
RegistryKey rkLocalM = Registry.LocalMachine;
而注册表各个根的具体对应如下:
然后,就用上面初始化后的对象,来操作注册表子键。
以下就举几个常用的用例。
第一, 枚举某个子键的所含子项以及子键的值;
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”这个值,以标明对当前打开的子键能具有可写的能力。否则,默认打开的方式,是不具有可写的能力,这样对待子项进行添加、删除以及修改等操作,会出现异常。
以下就注册表这个类进行说明。
首先,要引入注册类所在的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”这个值,以标明对当前打开的子键能具有可写的能力。否则,默认打开的方式,是不具有可写的能力,这样对待子项进行添加、删除以及修改等操作,会出现异常。
相关文章推荐
- 如何在C#中轻松操作注册表
- 如何在C#中轻松操作注册表
- 如何在C#中轻松操作注册表
- 如何用C#操作注册表
- C#操作注册表
- C#如何在Form中嵌入并且操作Excel表格
- 如何修改右键菜单新建文档的参数--注册表操作
- 在C#.net中如何操作XML
- java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)
- C# 操作注册表
- 在C#.net中如何操作XML
- 如何:通过使用 Visual C# 2010 功能访问 Office 互操作对象(C# 编程指南)
- 在C#.net中如何操作XML
- C#操作注册表
- C#操作注册表
- HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等
- c# 注册表操作,创建,删除,修改,判断节点是否存在
- 如何用ATL的CRegKey类来操作注册表
- 在Delphi中轻松操作注册表
- 在Delphi中如何对注册表进行操作