Registry Backup and Restore

Disclaimer: This article is a blogger original article, follow the CC 4.0 BY-SA copyright agreement, reproduced, please attach the original source link and this statement.
This link: https://blog.csdn.net/yujinlong312/article/details/102720960
BOOL EnableTargetPriv(LPTSTR lpszPrivilege)
{
	HANDLE hToken = NULL;
	TOKEN_PRIVILEGES tkp = { 0 };
	if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
		return FALSE;
	}
	if (!LookupPrivilegeValue(NULL, lpszPrivilege, &tkp.Privileges[0].Luid)) {
		CloseHandle(hToken);
		return FALSE;
	}
	tkp.PrivilegeCount = 1;
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;


	if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(TOKEN_PRIVILEGES), NULL, NULL)) {
		CloseHandle(hToken);
		return FALSE;
	}
	return TRUE;
}


void CRegtestDlg::OnBnClickedButtonBackup()
{
	// TODO: 在此添加控件通知处理程序代码
	CString filestr;
	CTime t = CTime::GetCurrentTime();
	filestr = t.Format("%Y%m%d%H%M%S");
	filestr += ".bin";
	HKEY hKey = NULL;
	TCHAR *lpszSubKey = _T("SYSTEM\\ControlSet001\\services\\DevaCfg");
	EnableTargetPriv(SE_BACKUP_NAME);
	LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
	if (lRet == ERROR_SUCCESS) {
		lRet = RegSaveKey(hKey, _T("D:\\RegBackup\\")+filestr, NULL);
		RegCloseKey(hKey);
	}
}


void CRegtestDlg::OnBnClickedButtonRestore()
{
	// TODO: 在此添加控件通知处理程序代码
	CString filePath;
	CFileDialog fileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "(*.bin)|*.bin|所有类型(*.*)|*.*||", NULL);
	if (fileDlg.DoModal() == IDOK)
	{
		filePath = fileDlg.GetPathName();
	}
	HKEY hKey = NULL;
	TCHAR *lpszSubKey = _T("SYSTEM\\ControlSet001\\services\\DevaCfg");
	EnableTargetPriv(SE_RESTORE_NAME);
	LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSubKey, 0, KEY_ALL_ACCESS, &hKey);
	if (lRet == ERROR_SUCCESS) {
		LPCTSTR lpszFile = filePath;
		lRet = RegRestoreKey(hKey, filePath, REG_FORCE_RESTORE);
		RegCloseKey(hKey);
	}
}

Guess you like

Origin blog.csdn.net/yujinlong312/article/details/102720960