class= " lineNumbers " de
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 :
|
class= de
_tmain " de " codeSnippet822471 d'id= " de int de class= (argc d'international, argv de _TCHAR* [])
{
backupReg (« \ de logiciel \ MyProgram », « c:\ \ reg.reg ») ;
//MyProgram contient des subkeys et des valeurs…
retour 0 ;
}
backupReg de BOOL (subreg de corde, savepath de corde)
{
keyHandle de HKEY ;
Résultat de LRESULT = RegOpenKeyExA (HKEY_CURRENT_USER, subreg.c_str (), 0L, KEY_ALL_ACCESS, &keyHandle) ;
si (résultat ! = ERROR_SUCCESS)
{
MessageBoxA (0, « ne pourrait pas s'ouvrir », le "", 0) ;
faux de retour ;
}
SetPrivilege (SE_BACKUP_NAME, RECTIFIENT) ;
SetPrivilege (SE_RESTORE_NAME, RECTIFIENT) ;
// tous les deux rouissent vrai
résultat = RegSaveKeyExA (keyHandle, savepath.c_str (), NULLE, REG_LATEST_FORMAT) ;
si (résultat ! = ERROR_SUCCESS)
{
MessageBoxA (0, « ne pourrait pas sauver », le "", 0) ;
faux de retour ;
}
RegCloseKey (keyHandle) ;
de retour rectifier ;
}
Privilège de //Set
BOOL SetPrivilege (lpszPrivilege de LPCTSTR, bEnablePrivilege de BOOL)
{
TOKEN_PRIVILEGES tp ;
Luid de LUID ;
La POIGNÉE hToken ;
OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) ;
si (! LookupPrivilegeValue (NULLE, lpszPrivilege, &luid))
FAUX de retour ;
tp.PrivilegeCount = 1 ;
tp. Privilèges [0]. Luid = luid ;
si (bEnablePrivilege)
tp. Privilèges [0]. Attributs = SE_PRIVILEGE_ENABLED ;
autrement
tp. Privilèges [0]. Attributs = 0 ;
AdjustTokenPrivileges (hToken, FAUX, le &tp, 0, (PTOKEN_PRIVILEGES) la NULLE, 0) ;
retourner ((GetLastError () ! =ERROR_SUCCESS) ? FAUX : RECTIFIER) ;
}
|