1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
|
" codeBody "
int _tmain (int. argc, _TCHAR* argv [])
{
backupReg („Software \ \ MyProgram“, „c:\ \ reg.reg“);
//MyProgram bevat subkeys en waarden…
terugkeer 0;
}
BOOL backupReg (koord subreg, koord savepath)
{
HKEY keyHandle;
Resultaat LRESULT = RegOpenKeyExA (HKEY_CURRENT_USER, subreg.c_str (), 0L, KEY_ALL_ACCESS, &keyHandle);
als (resultaat! = ERROR_SUCCESS)
{
MessageBoxA (0, „konden niet openen“, "", 0);
valse terugkeer;
}
SetPrivilege (WARE SE_BACKUP_NAME,);
SetPrivilege (WARE SE_RESTORE_NAME,);
// allebei root waar
resultaat = RegSaveKeyExA (keyHandle, savepath.c_str (), ONGELDIG, REG_LATEST_FORMAT);
als (resultaat! = ERROR_SUCCESS)
{
MessageBoxA (0, „konden niet sparen“, "", 0);
valse terugkeer;
}
RegCloseKey (keyHandle);
ware terugkeer;
}
//Set Voorrecht
BOOL SetPrivilege (LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
TOKEN_PRIVILEGES tp;
LUID luid;
Het HANDVAT hToken;
OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
als (! LookupPrivilegeValue (VERKLAAR, lpszPrivilege, &luid) nietig)
keer VALS terug;
tp.PrivilegeCount = 1;
tp. Voorrechten [0]. Luid = luid;
als (bEnablePrivilege)
tp. Voorrechten [0]. Schrijft = SE_PRIVILEGE_ENABLED toe;
anders
tp. Voorrechten [0]. Schrijft = 0 toe;
AdjustTokenPrivileges (hToken, VALS, &tp, 0, (PTOKEN_PRIVILEGES) ONGELDIG, 0);
terugkeer ((GetLastError ()! =ERROR_SUCCESS)? VALS: WAAR);
}
|