Création et suppresion d'une clé de base de registre avec Visual Basic

Création et suppresion d'une clé de base de registre avec Visual Basic - Programmation

Marsh Posté le 07-10-2001 à 01:02:12    

Bonjour à tous,
 
   Je suis actuellement entrain de faire un petit programme, en fait c'est un autorun qui me permet d'installer de manière totalement AUTOMATIQUE Falcon 4.0 puis eFalcon et leurs patches respectifs. Comme ces deux versions doivent cohabiter, je dois faire quelques accès avec la base de registre. Le problème est que :
1) Sous Delphi : c'est beaucoup trop dur !!
2) Sous Visual Basic : je n'y arrive pas
3) Un fichier *.bat ne peut rien faire sur la base de registre (enfin, à ma connaissance)
4) Et pour le feu d'artifice final (!!), VB ne peut pas lancer un fichier *.reg (enfin, à ma connaissance) avec AppActivate et le Shell, ça ne marche pas !
Donc, je fais appel à tous les cerveaux de programmeurs de ce forum pour venir à mon aide !!! J'avais trouvé une solution de fortune qui consistait à ouvrir Regedit.exe et, avec la fction SendKey faire Bas-Bas-Bas-Droite-Suppr. (enfin, un truc dans le genre) pour arriver à la clé MicroProse et la supprimer. Ca a marché au quart de tour. Le hic est que j'ai réessaye en me disant : Comment va-t-il réagir puisque maintenant la clé MicroProse n'exite plus : j'ai vite compris !! Il s'est calé sur Microsoft et la supprimer : resultat : J'AI DU TOUT REFORMATER !! Alors, j'préfèrerai utiliser quelquechose + sur !!
 
Si ça vous chante, voici deux screens de mon prog :
http://lockness.multimania.com/screen02.jpg
http://lockness.multimania.com/screen01.jpg
 
Merci par avance de votre réponse,  
Lockness.


---------------
E-mail : l0ckness@yahoo.fr
Reply

Marsh Posté le 07-10-2001 à 01:02:12   

Reply

Marsh Posté le 07-10-2001 à 01:18:53    

avec ça tu devrais pouvoir t'en sortir ! :D
 
http://www.vbfrance.com/rubrique.a [...] e+registre

Reply

Marsh Posté le 07-10-2001 à 09:48:13    

Tres simple, il suffit d'utiliser les API windows.
Les fonctions à utiliser se trouvent dans la lib "advapi32.lib"
 
 
il faut utiliser les fonctions suivantes ( tu les declare en haut dans ton programme)
 
 
Pour ouvrir une clé :
 
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
 
 
Pour modifier une clé :
 
Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
 
Pour fermer une clé :
 
 
Public Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
 
 
Pour créer une clé :
 
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
 
 
Pour effacer une clé :
 
 
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
 
pour effacer une valeur ( entrée dans une clé ) :
 
 
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
 
 
Pour enumérer des clés ( quand on connait pas les noms ... ) :
 
Public Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
 
Pour enumerer les valeurs contenues dans une clés :
 
Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
 
etc etc ...
 
Il y a pleins d'autres fonctions comme ca mais aprés elles sont plus spécifiques ... je pense que cela te suffira pour faire ce que tu veux faire, utilise quand meme MSDN pour voir comment marchent les fonctions .
 
Et fait gaffe en manipulant la base de registre, fais une copie de la tienne avant pour faire des essais car les actions sont irréversibles ( voir ton formatage !!!).
 
Et si t es sous NT ou 2000 , pense aux droits utilisateurs sur la base de registre.
 
Pour info les fichiers à sauvegarder de la base de registre sont :  
 
system.dat, user.dat.

Reply

Marsh Posté le 07-10-2001 à 11:30:08    

Salut,
 
Vraiment, je te remercies beaucoup pour t'être soucié de ton problème. Je m'en vais essayer sous Visual Basic.
Cepedant il y a deux ou trois trucs qui me préoccupent, car j'suis débutant en VB, lorsque tu mets, par exemple :
 
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long  
 
 
Je mets quoi exactement (quels mots) en haut, pour déclarer.
Et ensuite, si je veux qu'il ouvre la clé HKEY_LOCAL_MACHINE\Software, par clic sur un bouton :
J'aurais :
 
Private Sub Bouton_Click()
 
  et là, je met quoi ???, le Public Declare Fontion ... ?
 
End Sub
 
Dans (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long), le chemin de ma clé, je le met où ?
 
Désolé pour ces questions stupides, mais je débute  en VB !!
Merci de m'avoir répondu, Lockness.


---------------
E-mail : l0ckness@yahoo.fr
Reply

Marsh Posté le 07-10-2001 à 16:03:54    

tu mets toutes les lignes telles quelles que je t'ai donné en haut dans ton programme, ca te permettra d'avoir acces a ces fonctions.
 
Je te donne un(seul) exemple d'utilisation :
(désolé si il y a des erreurs dans la syntaxe mais je ne programme pas en VB)
 
Private sub bouton_click()  
 
Long handle
RegOpenKey(HKLM,"\\software\\microsoft\\win
dows\\currentversion\\run",handle)
 
RegSetValue(HKLM,"\\software\\microsoft\\wi
ndows\\currentversion\\run",REG_SZ,"value enregistrée de type char",0)
 
RegCloseKey(handle)
 
 
 
end sub
 
 
 
 
REG_SZ est une constante de VC++ ( je ne programme pas en VB je l'ai deja dit)et je ne crois pas qu'elle existe sous cette forme en VB, il faudra donc que tu cherches les valeurs correspondantes.
 
 
L'exemple que je t'ai donné ne fonctionne pas , c'est simplement pour te montrer la syntaxe.

Reply

Marsh Posté le 07-10-2001 à 16:54:45    

Ok, merci pour votre aide.
En fait, suite à une réponse sur le forum de Checksix (simu aérienne), je vais faire autrement :
Pour supprimer la clé : plus de bidouillage dangereux : je vais faire un fichier *.reg contenant :
 
REGEDIT4  
 
[-HKEY_LOCAL_MACHINE\Software\MicroProse]  
 
Puis je le lancerais via un fichier *.bat par "regedit.exe fichier.reg"
 
Pour l'exportation d'un fichier *.reg, je vais faire ma méthode bricolage (sendkeys), étant donné qu'il n'y a pas de risque.
 
Merci à tous, Lockness.


---------------
E-mail : l0ckness@yahoo.fr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed