MFC下注册表的备份与恢复

4 篇文章 0 订阅
3 篇文章 0 订阅
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("未恢复!");
}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值