Tout pour la base de registre

5/5 (27 avis)

Snippet vu 76 552 fois - Téléchargée 92 fois

Contenu du snippet

Ya pas grand chose à faire si ce n'est recopier ce code dans un module !!

Si vous comprenez pas c'est pas grave utilisez le juste (c vari que les apis sont un peu barbares)

Pour la valeur par defaut mettez un "" dans le parametre "valeur"

Les subs Run, IsRun et DelRun permettent de lancer votre programme au demarrage et de verifier si il demarre au demarrage

Source / Exemple :


Option Explicit

Dim lng As Long
Dim Buff As Long

'-------------------------------------------------------'
'ATTENTION : NE PAS METTRE DE \ AU DEBUT DU CHEMIN !!!!!'
'-------------------------------------------------------'

'-------------------------------------------------------'
'LAISSER VALEUR VIDE POUR LA CHAINE PAR DEFAUT          '
'-------------------------------------------------------'

'Constantes correspondant aux cinq clés
'à la base de la base de registres

Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_DYN_DATA = &H80000004

Public Enum HCle
  HKeyLocalMachine = 0
  HKeyCurrentUser = 1
  HKeyClassesRoot = 2
  HKeyUsers = 3
  HKeyDynamicData = 4
End Enum

'API nécessaires

'pour créer ou ouvrir une clé
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
    (ByVal HKey As Long, _
     ByVal lpSubKey As String, _
     phkResult As Long) As Long
     
'pour supprimer une clé
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
    (ByVal HKey As Long, _
     ByVal lpSubKey As String) As Long
     
'pour supprimer une valeur
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
    (ByVal HKey As Long, _
     ByVal lpSubKey As String) As Long
     
'pour lire une valeur
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
    (ByVal HKey As Long, _
     ByVal lpValueName As String, _
     ByVal lpReserved As Long, _
     lpType As Long, _
     lpData As Any, _
     lpcbData As Long) As Long
     
'pour fixer ou créer une valeur
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
    (ByVal HKey As Long, _
     ByVal lpValueName As String, _
     ByVal Reserved As Long, _
     ByVal dwType As Long, _
     ByVal lpData As Any, _
     ByVal cbData As Long) As Long

Public Function CreerCle(HK As HCle, Chemin As String) As Long
RegCreateKey HKConvert(HK), Chemin, lng
CreerCle = lng
End Function

Private Function HKConvert(HK As HCle) As Long
If HK = 2 Then HKConvert = HKEY_CLASSES_ROOT
If HK = 1 Then HKConvert = HKEY_CURRENT_USER
If HK = 0 Then HKConvert = HKEY_LOCAL_MACHINE
If HK = 3 Then HKConvert = HKEY_USERS
If HK = 4 Then HKConvert = HKEY_DYN_DATA
End Function

Public Function SupprCle(HK As HCle, Chemin As String)
RegDeleteKey HKConvert(HK), Chemin
End Function

Public Function DonnerValeur(HK As HCle, Chemin As String, Valeur As String, Donnee As String)
RegCreateKey HKConvert(HK), Chemin, lng
RegSetValueEx lng, Valeur, 0&, 1, Donnee, Len(Donnee) + 1
End Function

Public Function LireValeur(HK As HCle, Chemin As String, Valeur As String) As String
Buff = 0
Buff = RegCreateKey(HKConvert(HK), Chemin, lng)
If Buff = 0 Then RegQueryValueEx lng, Valeur, 0&, 1, 0&, Buff
If Buff < 2 Then
  LireValeur = ""
  Exit Function
End If
LireValeur = String(Buff + 1, " ")
RegQueryValueEx lng, Valeur, 0&, 1, ByVal LireValeur, Buff
LireValeur = Left(LireValeur, Buff - 1)
End Function

Public Function SupprValeur(HK As HCle, Chemin As String, Valeur As String)
Buff = 0
Buff = RegCreateKey(HKConvert(HK), Chemin, lng)
If Buff = 0 Then RegDeleteValue lng, ByVal Valeur
End Function

Public Sub Run(Parametre As String)
DonnerValeur HKeyLocalMachine, "Software\Microsoft\Windows\CurrentVersion\Run", App.Title, App.Path & "\" & App.EXEName & ".exe " & Parametre
End Sub

Public Function IsRun() As Boolean
If LireValeur(HKeyLocalMachine, "Software\Microsoft\Windows\CurrentVersion\Run", App.Title) <> "" Then IsRun = True Else IsRun = False
End Function

Public Sub DelRun()
SupprValeur HKeyLocalMachine, "Software\Microsoft\Windows\CurrentVersion\Run", App.Title
End Sub

Conclusion :


Juste une remarque, vous ne pouvez ecrire que des Srtings avec ca !!

A voir également

Ajouter un commentaire Commentaires
AllalcoolG Messages postés 16 Date d'inscription jeudi 15 septembre 2005 Statut Membre Dernière intervention 23 octobre 2008
25 sept. 2005 à 15:22
tu connaitrais un moyen de recup la valeur d'une clé de registre sur un machine distante en passant OBLIGATOIREMENT comme argument le mot de passe, le compte et la lien vers la clés (la machine ou se situe la BDR est dans un autre domaine)?
Il y a un moyen en passant un runas mais semble trop lourd.

Y a t il plus simple? API?
ManDeq59 Messages postés 55 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 6 juillet 2004
12 juin 2004 à 10:56
Et comment tu fais pour lire ou écrire une clé de type MULTI_SZ ???
Voilà quelle est bonne ma question ????
Utilisateur anonyme
31 mai 2004 à 14:47
Trop bon, enfi je trouve ce que je cherche
vbGuy Messages postés 60 Date d'inscription samedi 10 novembre 2001 Statut Membre Dernière intervention 13 juin 2004
28 mai 2004 à 18:12
!$% #*) c est le nombre de visite (en CAPS LOCK sur un QWERTY) il faut le faire.
Il y doit y avoir un bug, ou si ce n est pas ca je donne le nom de mes source et tu fait la meme chose
187bundy Messages postés 172 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 10 juin 2004
28 mai 2004 à 08:55
Allez, j'te mets 10/10 paske tu nous a bien fait marrer !!

++
187
Afficher les 27 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.