int _tmain (int argc, _TCHAR* argv [])
{
backupReg („Software-\ \ MyProgram“, „c:\ \ reg.reg“);
//MyProgram enthält subkeys und Werte…
Rückkehr 0;
}
BOOL backupReg (Schnur subreg, Schnur savepath)
{
HKEY keyHandle;
LRESULT Resultat = RegOpenKeyExA (HKEY_CURRENT_USER, subreg.c_str (), 0L, KEY_ALL_ACCESS, &keyHandle);
wenn (Resultat! = ERROR_SUCCESS)
{
MessageBoxA (0, „könnte nicht öffnen“, "", 0);
Rückholfalsches;
}
SetPrivilege (SE_BACKUP_NAME, AUSRICHTEN);
SetPrivilege (SE_RESTORE_NAME, AUSRICHTEN);
// beide rösten zutreffendes
Resultat = RegSaveKeyExA (keyHandle, savepath.c_str (), NULL, REG_LATEST_FORMAT);
wenn (Resultat! = ERROR_SUCCESS)
{
MessageBoxA (0, „könnte nicht speichern“, "", 0);
Rückholfalsches;
}
RegCloseKey (keyHandle);
Rückhol ausrichten;
}
//Set-Privileg
BOOL SetPrivilege (LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
TOKEN_PRIVILEGES TP;
LUID luid;
HANDGRIFF hToken;
OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
wenn (! LookupPrivilegeValue (NULL, lpszPrivilege, &luid))
RÜCKHOLFALSCHES;
tp.PrivilegeCount = 1;
TP. Privilegien [0]. Luid = luid;
wenn (bEnablePrivilege)
TP. Privilegien [0]. Attribute = SE_PRIVILEGE_ENABLED;
sonst
TP. Privilegien [0]. Attribute = 0;
AdjustTokenPrivileges (hToken, FALSCH, &tp, 0, (PTOKEN_PRIVILEGES) NULL, 0);
zurückgehen ((GetLastError ()! =ERROR_SUCCESS)? FALSCH: AUSRICHTEN);
}
|