导入导出注册表项的类

最近因为工作的需要,要对注册表项进行备份恢复,于是我就去了解了一下注册表的相关内容。原本我打算用RegSaveKey和RegRestoreKey来进行备份恢复。可是在使用过程中发现这两个函数使用起来非常麻烦,于是就寻找别的解决方法。经过一段时间的努力,我最终完成了注册表项导入导出的功能。这个类简介如下:

一、读取注册表项的各个键值,然后写到文件中

void ExportRegistry(
CString cstrKeyRootName, //注册表根值,如HKEY_CURRENT_USER
CString cstrKeyName,   //注册表子键
CString cstrFileName)  //导出的文件名(包括路径)
{
FILE *fp;
HKEY hKeyRootName;
CString cstrFullPathStr(_T(""));
if(cstrKeyRootName == _T("HKEY_CLASSES_ROOT"))
 hKeyRootName = HKEY_CLASSES_ROOT;
else if(cstrKeyRootName == _T("HKEY_CURRENT_USER"))
 hKeyRootName = HKEY_CURRENT_USER;
else if(cstrKeyRootName == _T("HKEY_LOCAL_MACHINE"))
 hKeyRootName = HKEY_LOCAL_MACHINE;
else if(cstrKeyRootName == _T("HKEY_USERS"))
 hKeyRootName = HKEY_USERS;
else if(cstrKeyRootName == _T("HKEY_PERFORMANCE_DATA"))
 hKeyRootName = HKEY_PERFORMANCE_DATA;
else if(cstrKeyRootName == _T("HKEY_CURRENT_CONFIG"))
 hKeyRootName = HKEY_CURRENT_CONFIG;
else if(cstrKeyRootName == _T("HKEY_DYN_DATA"))
 hKeyRootName = HKEY_DYN_DATA;
fp = fopen(cstrFileName, "w+");
if(fp == NULL)
{
 MessageBox(NULL, _T("Error while creating the file"), _T("Registry export"), MB_OK);
 return;
}
if(cstrKeyName.IsEmpty())
 cstrFullPathStr = cstrKeyRootName;
else
 cstrFullPathStr = cstrKeyRootName + _T("\\") + cstrKeyName;
//// First print the header ..... this may be different for some version of Windows... do manually change if required
//Here need to add version check
DWORD dwVersion = GetVersion();
// Get build numbers for Windows NT or Win32s
if (dwVersion < 0x80000000)        // Windows NT
{
 fprintf(fp, "%s\n", _T("Windows Registry Editor Version 5.00"));
}
else    // Win32s
{
 fprintf(fp, "%s\n", _T("REGEDIT4"));
}
EnumerateValues(hKeyRootName, cstrKeyName, fp, cstrFullPathStr);
EnumerateKey(hKeyRootName, cstrKeyName , fp , cstrFullPathStr);
fclose(fp);
}
这种方法比较原始,也比较复杂,是直接读取、枚举注册表的键值,然后一项一项的写到文件中。这种方法是我在参考Thanigai Murugan K.(具体的出处记不起来了)写的。他原来导出的函数中存在比较多的问题,一是不能导出所有的键值,二是导出的有些键值不符合规范,无法进行导入。我除了EnumerateValues函数没有修改外,其他的函数全都重新写了一遍。这个函数使用起来也非常方便,例如:CRegisterExport re;
re.ExportRegistry("HKEY_CURRENT_USER","Software\\VCKBASE","C:\\Test.reg");

时间: 2024-10-03 01:53:29

导入导出注册表项的类的相关文章

WinXP如何导入或导出注册表

  WinXP如何导入或导出注册表           一.将注册表项导出为普通文本文件 导出注册表项内容的步骤如下: 1.选中要导出的注册表项. 2.选择"文件"∣"导出"命令,打开"导出注册表文件"对话框. 3.在"保存在"下拉列表中可选择所导出的注册表文件的存放位置,在"文件名"文本框中用户可输入导出的注册表文件的名称,在"导出范围"选项组中,用户可选择"全部"

使用注册表文件(REG)添加、修改或删除Windows注册表项和值

1. 简介 我们平时大多采用Regedit注册表编辑器来实现对注册表的修改操作,但 是这种手工操作费时费力,当你要对多台PC统一修改注册表时,就要怨念了.并且在某些情 况下,如果注册表编辑器被禁用了,那么这种方法也会失效.于是,推荐大家使用REG文件来 快速完成注册表的修改. REG文件实际上是一种注册表脚本文件,Regedit注册表编辑 器可以使用REG文件来导入.导出注册表的子项和值.双击REG文件(即用Regedit.exe 注册 表编辑器程序运行该文件)即可将其中的数据导入到注册表中.我

php mysql数据的导入导出,数据表结构的导入导出

实现数据的导入导出,数据表结构的导入导出 ********************************************************/         //         //包含Mysql数据库操作文件         //         require_once("MysqlDB.php");          /******************************************************* **类    名:MysqlDB

Office2003 删除 COM 外接程序的注册表项

COM 加载项可以安装在任何位置.Word 安装 COM 添加宏与交互的程序中删除 COM 外接程序的注册表项,然后重新启动 Word (在典型的实现方法. 操作步骤: 若要删除 COM 外接程序的注册表项,请按照下列步骤操作: 退出所有 Office 程序. 双击桌面上的支持模板快捷方式. 在支持模板中,单击疑难解答工具. 在Microsoft Word 疑难解答实用程序对话框中, COM 外接程序的注册表项列表中单击选择一项,然后单击删除. 当您收到一条消息,将 HKEY_CURRENT_U

清除Word常用选项:Office2003删除 Word Data 注册表项

大多数常用选项存储在 Word Data 注册表项.(若要查看这些选项,请单击选项在工具菜单上.一个常见的故障排除步骤是删除 Word Data 注册表项.下次启动 Word 时,Word 使用默认设置重建此数据键.如果通过删除 Word Data 注册表项未解决此问题,请转到步骤 2. 注意 如果您删除 Word Data 注册表项,Word 几个选项重置回其默认设置,如最近使用文件列表的文件菜单上的.此外,Word 会重置您在选项对话框中自定义的许多设置. 操作步骤: 若要删除 Word D

电脑中出现提示需要设置注册表项HKLM\Software怎么解决

  电脑中出现提示需要设置注册表项HKLMSoftware怎么解决          1.按Win+R打开运行,输入regedit并回车; 2.在注册表中依次展开HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFramework; 3.在右侧找到InstallRoot,并双击打开,将其值修改为.NET Framework的安装路径,比如为C:WINDOWSMicrosoft.NETFramework; 4.如果没有找到InstallRoot,则在该目录下新建一个字符

通过修改注册表项让Win7系统宽带网络加速

虽然说决定上网的绝大部分因素是宽带的流量,相对而言,针对机子上的加快上网速度的技巧的作用就是蚊子肉,但怎么说也是肉.通过修改注册表项,来实现上网速度的提升. 这个话题着实够老的了,但是老归老,电脑新手可是天天产生,很多朋友第一次接触电脑和网络就是用Windows7系统的,没经历过DOS.Win95.Win98甚至XP时代. 本文开始前,先说下加速的原理分析,不对的地方,还请大家多多指正! 上网加速原理分析: 通常情况下,TCP/IP默认的数据传输单元接受缓冲区的大小为576字节,要是将这个缓冲区

如何新建注册表项

  在通常情况下,需要对系统环境进行个性定制时,就可以在注册表中新建相应的注册表项,具体的数值类型选择可以根据需要实现的应用来定. 1.在键值项区空白处右击,然后选择"新建",在级联菜单中选择合适的键值类型. 2.首先要修改键值的名称,完成后再在编辑框中定义其数据值,就可以新建完成注册表项.

无法保存对hosts权限所作的更改 拒绝访问(权限,防止Windows主机文件、进程、注册表项进行操作和更改)

为Windows安装或修改配置. 无法保存对hosts权限所作的更改 拒绝访问 (权限,防止Windows主机文件.进程.注册表项进行操作和更改) 例如,下图: 1.使用Windows的"管理员权限"进行操作 或给当前的Windows用户分配此文件的写权限: 2.如果为文件的修改,可以先创建和复制文件副本其他地方,修改后覆盖 3.计算机安装的杀毒软件和管理软件,控制了文件修改权限,可以先"取消勾选"修改权限,操作完成后,然后还原到控制.小红伞eg:如下图.