Soyez le premier à donner votre avis sur cette source.
Snippet vu 32 946 fois - Téléchargée 63 fois
'*********************************************** '* 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
J'ai rien à redire.
Fais une recherche 'source' sur RegOpenKeyEx, y a surement des trucs sinon utilise ma dll (v 9 derniere je crois).
Mathieu M-Gosselin
mathieumg@qc-net.com
BruNews, MVP VC++
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.
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.