Bonjour,
Avant de modifier des clés dans [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkList\ je veux sauvegarder.
Avec Registry.Savekey (et SeBackupPrivilege ) ça marche.
Mais je voudrai également sauvegarder au format ".reg" pour afficher dans un mémo les clés avant et après modification (sécurisant et pédagogique). Mais la je bloque.
Pour cela j’utilise Reg.exe en paramètre de cmd.exe lancé par shellexecute
(code simplifié )
Résultat :
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 procedure TForm2.SauvegardeRegistre_Bug; var SEInfo: TShellExecuteInfo; begin FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpVerb := PChar('runas'); lpFile := PChar('cmd.exe'); lpParameters := PChar('/k REG.exe EXPORT "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList" "c:\aa\NetWorkListBug.txt" /y'); nShow := SW_SHOWNORMAL; end; ShellExecuteEx(@SEInfo) end;
Un fichier de sauvegarde est créé mais il ne comporte qu’une ligne, alors qu’il devrait en comporter 68. Il n’y a pas de message d’erreur et dans la fenêtre de commande Il est indiqué « L’opération a réussi »
Contenu du fichier de sauvegarde :
Contexte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList] "FirstNetwork"=dword:00000001
Windows 8.1 64 bits, Delphi XE starter lancé en mode administrateur,
le programme comporte un manifest pour mode administrateur,
Une fonction testée et opérationnelle attribue le privilège. 'SeBackupPrivilege'
Vérifications effectuées :
A –Syntaxe de la ligne de commande :
- Lancement de reg.exe par un fichier .bat exécuté depuis l’invite de commande en mode administrateur ) :
Resultat Ok
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 REG.exe EXPORT "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles" "NetWorkListOk.txt"'
Contenu du fichier de sauvegarde :
B –Avec le même code Delphi sauvegarde d’une clé "moins sensible" :
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 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{1D982609-2A7A-4321-91F2-2ECE4004EE6A}] "ProfileName"="Réseau" "Description"="Réseau" "Managed"=dword:00000000 "Category"=dword:00000000 "DateCreated"=hex:dd,07,01,00,06,00,0c,00,10,00,2c,00,38,00,a4,00 "NameType"=dword:00000006 "DateLastConnected"=hex:dd,07,01,00,06,00,0c,00,11,00,0e,00,1a,00,66,02 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{2793008C-913B-4E46-A9B1-65F56B9B3A56}] "ProfileName"="WANADOO-3922 3" "Description"="Réseau" "Managed"=dword:00000000 "Category"=dword:00000001 "DateCreated"=hex:de,07,01,00,03,00,08,00,0d,00,19,00,28,00,0a,03 "NameType"=dword:00000047 "DateLastConnected"=hex:de,07,07,00,01,00,07,00,07,00,33,00,02,00,3b,03 "CategoryType"=dword:00000000 Etc .
( crée pour le test)
(code simplifié )
Résultat Ok la sauvegarde est complète.
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 procedure TForm2.SauvegardeRegistre_Ok; var SEInfo: TShellExecuteInfo; begin FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpVerb := PChar('runas'); lpFile := PChar('cmd.exe'); lpParameters := PChar('/k REG.exe EXPORT "HKCU\MacCleTest" "c:\aa\Macle.txt" /y' ); nShow := SW_SHOWNORMAL; end; ShellExecuteEx(@SEInfo) end;
Contenu du ficjier de sauvegarde :
De tout cela je pense qu’il s’agit d’un problème de droit(s) et(ou) privilège(s) et(ou) permission(s)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\MacCleTest] [HKEY_CURRENT_USER\MacCleTest\Exemple Clee Binaire] @="00 01 02 03 04 05" "FGFG"="Bonjour" "ABC"="Au revoir !" [HKEY_CURRENT_USER\MacCleTest\MaSouclé] "ValSousCle1"="Delphi"
Je ne voudrais pas avoir a modifier les permissions des clés du registre a sauvegarder (si tant est que cela soit suffisant ...)
Voilà. Une idée pour permettre la sauvegarde complète au format .reg ?
Partager