这个其实发在这里有点不合适,因为在.NET环境下本身很多数据都采用xml格式化,存储在本地,另一方面是.net的类库也非常的灵活,对注册表操作非常方便,没有必要画蛇添足来这么一个包装的类,但是如果你用 vc++ , WIN32 API ,做开发的时候,你会发现要对注册表操作非常的困难,更让人寒心的是,它居然没有提供对注册表键的重命名,在NTDLL.dll 中有一个可以替代的API:NTRenameKey, 但是它只有winXP之后的操作系统才提供,所以,笔者在这里提供这样一个操作类,主要是弥补了 WIN32 API 在这方面的不足。如果读者有兴趣的话可以去看 Dan Madden 写的一篇文章: http://www.codeproject.com/KB/system/NtRegistry.aspx 但是他的项目必须要用到MFC的类库,感觉不爽。
废话到此为止。
主要方法:
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->
bool
ExistKey(HKEY hKey,
const
LPTSTR subKey)
const
; //是否存在这样一个键
bool KeyRename(HKEY hKey, LPTSTR lpRootKey, LPTSTR lpOldName, LPTSTR lpNewName); // hKey 为HKEY_* 之一, 把 lpRootKey下面的 lpOldName名字改成 lpNewName , 比如要把SOFTWARE\\*\\subkey\\TEST改成 SOFTWARE\\*\\subkey\\renamed, 参数设置应该如下: lpRootKey = SOFTWARE\\*\\subkey, lpOldName = TEST, lpNewName= renamed
bool CopyKeyValues(HKEY hKey, const LPTSTR lpSourceKey, const LPTSTR lpDestKey) const ; //把 lpSourceKey 键的所有值,复制给 lpDestKey
bool DeleteKey(HKEY hKey, const LPTSTR lpSubKey) const ;// 删除 lpSubKey下所有的键,子键,值
bool HasSubKey(HKEY hKey, const LPTSTR lpSubKey) const ; //是否有子键
bool KeyRename(HKEY hKey, LPTSTR lpRootKey, LPTSTR lpOldName, LPTSTR lpNewName); // hKey 为HKEY_* 之一, 把 lpRootKey下面的 lpOldName名字改成 lpNewName , 比如要把SOFTWARE\\*\\subkey\\TEST改成 SOFTWARE\\*\\subkey\\renamed, 参数设置应该如下: lpRootKey = SOFTWARE\\*\\subkey, lpOldName = TEST, lpNewName= renamed
bool CopyKeyValues(HKEY hKey, const LPTSTR lpSourceKey, const LPTSTR lpDestKey) const ; //把 lpSourceKey 键的所有值,复制给 lpDestKey
bool DeleteKey(HKEY hKey, const LPTSTR lpSubKey) const ;// 删除 lpSubKey下所有的键,子键,值
bool HasSubKey(HKEY hKey, const LPTSTR lpSubKey) const ; //是否有子键
代码下载:
我是下载链接
所有代码在vc6.0 windows XP下测试通过。