Accès a la base de registre sans api ! v2

Soyez le premier à donner votre avis sur cette source.

Snippet vu 32 872 fois - Téléchargée 63 fois

Contenu du snippet

J'ai fait ça avec l'exemple en Vbs de windows ce qui donne un module reg.bas à ajouter au projet et de mettre ce code dedans.

Source / Exemple :


'***********************************************
'*    Reg.bas : La base de registre sans API   *
'*    Créé par Clément LEGER                   *
'*    clem@progfr.com                          *
'***********************************************
'Ce code est libre d'utilisation (c'est pour ça qu'il est
'sur vbfrance !
'
'L'utilisation est très simple : Il suffit de taper "Reg." dans
'votre code, et il est affiché les fonctions possibles à utiliser.

'[Reg.Ecrit]
'   Reg.Ecrit sert à créé ou modifier une clé.
'   Le premier paramètre, est les clés, il suffit de choisir dans la liste qui s'affiche toute seule.
'   Le deuxième est l'endroit ou écrire.
'   Le troisième la valeur
'   Le dernier, le format :
'       REG_String : Format chaine de caractère normale (exemple : "C:\WINDOWS\wt\updater\wcmdmgrl.exe -launch")
'       REG_Number : Un nombre style integer (exemple : 43574)
'       REG_Binary : Un code binaire (exemple : 1) pratique pour enregistrer une configuration.
'       REG_Expand_String : Une chaine de caractère "expandable" (exemple : "%windir%\calc.exe")
'   Vous n'êtes pas obligés de préciser le format, il le sera automatiquement sur REG_String par défault
'
'Exemple 1 : Reg.Ecrit HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", "C'est un test", REG_String
'            Mettra "C'est un test" dans la valeur par défault de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
'Exemple 2 : Reg.Ecrit HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\wcmdmgr", "C:\WINDOWS\wt\updater\wcmdmgrl.exe -launch"
'            Mettra le programme de mise à jour automatique de Windows au démarrage (Sous Windows XP au moins)

'[Reg.Lit]
'Les deux premiers paramètres fonctionnent comme pour Reg.Ecrit
'Le troisième est le texte renvoyé en cas d'erreur. Par défault ce texte est "Erreur"
'Exemple 1 : MsgBox Reg.Lit(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId")
'            Vous donnera votre numéro de license de Windows
'Exemple 2 : MsgBox Reg.Lit(HKEY_LOCAL_MACHINE, "Clé\Qui\Existe\Pas")
'            Vous renvoyera "Erreur", car la clé n'éxiste pas.
'Exemple 3 : MsgBox Reg.Lit(HKEY_LOCAL_MACHINE, "Clé\Qui\Existe\Pas", "Inconue")
'            Vous renvoyera "Inconue", car la clé n'éxiste pas.

'[Reg.Suprime]
'Vous permet de suprimer une clé dans la base de registre.
'Fonctionne de la même façon que Reg.Lit, sauf que Reg.Suprime ne renvoie rien.

Public Enum HKEYs
    HKEY_CLASSES_ROOT = 0
    HKEY_CURRENT_USER = 1
    HKEY_LOCAL_MACHINE = 2
    HKEY_USERS = 3
    HKEY_CURRENT_CONFIG = 4
End Enum

Public Enum REG_TYPE
    REG_String = 0
    REG_Number = 1
    REG_Binary = 2
    REG_Expand_String = 3
End Enum

Public Sub Ecrit(HKEY As HKEYs, Endroit As String, Valeur As String, Optional Type_Of_Reg As REG_TYPE = REG_String)
    Dim WSHShell
    Set WSHShell = CreateObject("WScript.Shell")
    Select Case Type_Of_Reg
        Case 0: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_SZ"
        Case 1: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_DWORD"
        Case 2: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_BINARY"
        Case 3: WSHShell.RegWrite HK(HKEY) & Endroit, Valeur, "REG_EXPAND_SZ"
    End Select
End Sub

Public Function Lit(HKEY As HKEYs, Endroit As String, Optional Retourner_En_Erreur As String = "Erreur") As String
    On Error Resume Next
    Dim WSHShell
    Set WSHShell = CreateObject("WScript.Shell")
    Lit = WSHShell.RegRead(HK(HKEY) & Endroit)
    If Err <> 0 Then Lit = Retourner_En_Erreur
End Function

Public Sub Suprime(HKEY As HKEYs, Endroit As String)
    On Error Resume Next
    Dim WSHShell
    Set WSHShell = CreateObject("WScript.Shell")
    WSHShell.RegDelete HK(HKEY) & Endroit
End Sub

Private Function HK(HKEY As HKEYs) As String
    Select Case HKEY
        Case 0: HK = "HKCR\"
        Case 1: HK = "HKCU\"
        Case 2: HK = "HKLM\"
        Case 3: HK = "HKEY_USERS\"
        Case 4: HK = "HKEY_CURRENT_CONFIG\"
    End Select
End Function

A voir également

Ajouter un commentaire

Commentaires

Messages postés
23
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
27 décembre 2010

Simple, claire et facile à utilisé.
J'ai rien à redire.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Si tu sais declarer et utiliser une fonction d'API alors celles de la base de registres ne sont pas plus compliquees que les autres.
Fais une recherche 'source' sur RegOpenKeyEx, y a surement des trucs sinon utilise ma dll (v 9 derniere je crois).
Messages postés
558
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
18 février 2006

BruNews saurais-tu ou je pourrais trouver un script de reg qui utilise les Api et pleinement fonctionnel ? Ni sur CS ni sur google je n'ai trouvé un qui marche parfaitement...


Mathieu M-Gosselin
mathieumg@qc-net.com
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
GregoH > les acces base de registres doivent se faire AVEC les APIs et non sans. Un antivirus correct interceptera toute tentative d'acces par la machine script, API est fait pour cela et on DOIT l'utiliser.

BruNews, MVP VC++
Messages postés
3
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
12 novembre 2004

Bonjour,
Je viens de récupérer le code source servant à lire, écrire ou
supprimer une clé dans la base de registre sans utiliser les API. J'a ibien
compris le principe, malheureusement avec ce systeme on ne peut pas donner
nommer la valeur que l'on veut ajouter.
Je m'explique, j'aimerais ajouter une valeur chaine dans :
HKEY_CURRENT_USER\Environment
Cette valeur aura pour nom : "CNEXTBACKGROUND" et sa valeur sera "no"

Avec le code, si j'écrit : Reg.Ecrit HKEY_CURRENT_USER, "Environment",
"no", REG_String lorsque je regarde la base de registre je vais avoir
"no" dans la valeur par défault et non pas une valeur nommée
"CNEXTBACKGROUND" ayant "no" pour données.

De plus si j'écrit Reg.Ecrit HKEY_CURRENT_USER,
"Environment\CNEXTBACKGROUND", "no", REG_String lorsque je regarde la base de registre je
vais avoir une clé sous Environment et ce n'est pas ce que je veux.

Si vous avez la solution je suis preneur car j'en ai vraiment baesoin
pour le logiciel.

Merci beaucoup. En tous les cas le code est génial pour supprimer ou
éffacer les clés, vraiment pratique.

Greg.
Afficher les 25 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.