372上位机VC MFC导入与导出注册表项导入与导出注册表项
372上位机VC MFC导入与导出注册表项导入与导出注册表项功能展示
不正确地编辑注册表可能会对系统造成严重损坏,所以在更改注册表之前我们应当对计算机上有价值的数据进行备份,后期出现问题才可导入进行还原,我们当前例程就实现注册表的导入与导出功能,效果如图,再输入要操作的注册表项后,如输入了HKEY_CLASSES_ROOT,再点击导入,或导出按钮,会弹出文件保存或打开对话框,选择目录后点击确认就可快速保存或导入注册表文件
要点提示
注册表的导入与导出功能,我们例程通过自己封装的类CRegisterExport实现。类只有三个对外的成员函数 void ExportRegistry(CString cstrKeyRootName, CString cstrKeyName, CString cstrFileName);
void ShellExportRegister(LPCTSTR lpExportStr,LPCTSTR lpExportFile);
void ShellImportRegister(LPCTSTR lpImportFile);
也就是执行注册表导入与导出功能的三个函数;
实现功能
1.新建基于对话框的应用程序
2.复制例程根目录CRegisterExport类的两文件RegisterExport.cpp, RegisterExport.h到自己工程根目录并载入到工程中,在对话框中包含头文件RegisterExport.h;
3.依照例程界面添加编辑框IDC_EDIT1用于输入注册表项名。再添加按钮<使用写文件的方式导出注册表项(得包含子项) ><使用ShellExecute方式导出注册表项><使用ShellExecute方式导入注册表项>关联按钮的点击函数
#include "RegisterExport.h"
void CGkbc8Dlg::OnButton1()
{
CString strFull;
GetDlgItemText(IDC_EDIT1,strFull);
if(strFull.IsEmpty())
{
AfxMessageBox("请填入导出项!");
return;
}
CFileDialog dlg(FALSE,"reg",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"Register File(*.reg)|*.reg||");
if(dlg.DoModal() == IDOK)
{
CRegisterExport re;
CString strRoot;
int nIndex = 0;
CString strPath;
nIndex = strFull.Find("\\");
if(nIndex == -1)
{
strRoot = strFull;
strFull ="";
}
else
{
strRoot = strFull.Left(nIndex);
strFull = strFull.Right(strFull.GetLength()-nIndex-1);
}
strPath = dlg.GetPathName();
re.ExportRegistry(strRoot,strFull,strPath);
}
}
GetDlgItem(IDC_SHOPCENTER)->MoveWindow(40,95,200,40);
}
void CGkbc8Dlg::OnButton2()
{
CString strFull;
GetDlgItem(IDC_EDIT1)->GetWindowText(strFull);
if(strFull.IsEmpty())
{
AfxMessageBox("请填入导出项!");
return;
}
CFileDialog dlg(FALSE,"reg",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"Register File(*.reg)|*.reg||");
if(dlg.DoModal() == IDOK)
{
CString strFile = dlg.GetPathName();
CRegisterExport re;
re.ShellExportRegister(strFull,strFile);
}
}
void CGkbc8Dlg::OnButton3()
{
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"Register File(*.reg)|*.reg||");
if(dlg.DoModal() == IDOK)
{
CString strFull = dlg.GetPathName();
CRegisterExport re;
re.ShellImportRegister(strFull);
}
}
void CGkbc8Dlg::OnButton3()
{
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"Register File(*.reg)|*.reg||");
if(dlg.DoModal() == IDOK)
{
CString strFull = dlg.GetPathName();
CRegisterExport re;
re.ShellImportRegister(strFull);
}
}
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|