Bonjour,
Je viens de coder une fonction pour savoir si la restauration du système est activée ou non. Sous Vista/W7 j'analyse la donnée de la valeur "RPSessionInterval".
Tout fonctionne parfaitement sur les OS 32bits (XP,Vista et W7).
Mais je n'arrive pas à accéder à la valeur "RPSessionInterval" dans un environnement 64bits (Vista et W7)
Voici le code que j'utilise :
Voilà si vous avez une idée sur la question, je vous en remercie par avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 function fInfoRestore(hRootKey:HKEY;sRegKey:string):boolean; //=========================================================== // Information sur l'activation de la restauration du système //=========================================================== var reg : TRegistry; iValueRPSessionInterval : integer; begin Result := True; //hRootkey := HKEY_LOCAL_MACHINE //sRegKey := "\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" With FormZHPDiag do begin //Registre reg := TRegistry.Create; With reg do begin RootKey := hRootKey; OpenKey(sRegKey, false); Access := KEY_WOW64_64KEY or KEY_QUERY_VALUE; end; //ShowMessage('KEY_WOW64_64KEY :' + IntToStr(KEY_WOW64_64KEY)); = 256 (d) = 100 (H) //ShowMessage('KEY_QUERY_VALUE :' + IntToStr(KEY_QUERY_VALUE)); = 1 if reg.ValueExists('RPSessionInterval') then begin Try iValueRPSessionInterval := reg.ReadInteger('RPSessionInterval'); Except on eRegistryException do begin iValueRPSessionInterval := 9; end; end; end else begin iValueRPSessionInterval := 9; ShowMessage('RPSessionInterval non accessible'); end; end; //Libère le registre reg.CloseKey; reg.Destroy; end;
A bientôt...
Partager