MFC下注册表的备份与恢复

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yujinlong312/article/details/102660418
void CRegDlg::OnBnClickedButtonOpen()
{
	// TODO: 在此添加控件通知处理程序代码
	system("Regedit.exe");
}

CString strDirPath = "";

void CRegDlg::OnBnClickedButtonBackup()
{
	// TODO: 在此添加控件通知处理程序代码
	SetDlgItemText(IDC_EDIT_PATH, "");
	{
		BROWSEINFOA bi;//弹出选择文件夹的对话框
		::memset(&bi, 0, sizeof(bi));//memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的,将以&bi为起始地址,大小为sizeo(bi)的内存区域用0填充
		char szPath[MAX_PATH];//最长全路径长度
		LPITEMIDLIST pItem = SHBrowseForFolder(&bi);//Displays a dialog box enabling the user to select a Shell folder.
		CString strDir;
		if (pItem != 0) {
			::SHGetPathFromIDList(pItem, szPath);//把项目标志符列表转换为文档系统路径
			strDirPath = szPath;
			strDir = strDirPath;
			if (strDirPath.Find('\\') < 0 || strDirPath.GetAt(strDirPath.GetLength() - 1) != '\\') {
				strDirPath += "\\";
			}
			//转换为年月日时分秒的二进制文件
			CTime t = CTime::GetCurrentTime();
			CString strTime = t.Format("%Y%m%d%H%M%S");
			strTime += ".bin";
			strDirPath += strTime;
		}
		SetDlgItemText(IDC_EDIT_PATH, strDir);
	}
	
	if (strDirPath.IsEmpty()) {
		AfxMessageBox("请指定需要备份的文件目录");
		return;
	}
	CString strCmd;
	CString strkey = "HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\services\\DevaCfg";
	CString strkey1 = "HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\EventLog\\System\\DevaCfg";
	strCmd.Format("cmd /c reg export %s %s", strkey, strDirPath);
	WinExec(strCmd, SW_HIDE);//SW_HIDE表示程序启动后隐藏主窗口
	AfxMessageBox("备份成功!");
	SetDlgItemText(IDC_EDIT_PATH, "");
}
	


void CRegDlg::OnBnClickedButtonRestore()
{
	// TODO: 在此添加控件通知处理程序代码
	CString strCmd;
	CFileDialog fDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST, "myregedit(*.reg)|*.reg|All Files(*.*)|*.*");//打开文件对话框

	if (fDlg.DoModal() == IDOK) {
		CString strFile = fDlg.GetPathName();
		SetDlgItemText(IDC_EDIT_PATH, strFile);
		strCmd.Format("cmd /c reg import %s", strFile);
		WinExec(strCmd, SW_HIDE);
		AfxMessageBox("还原成功!");
		return;
	}
	AfxMessageBox("未恢复!");
}

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yujinlong312/article/details/102660418