Registre api

browser64 Messages postés 112 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 5 décembre 2010 - 20 juin 2006 à 05:48
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 20 juin 2006 à 14:30
<ol>
<li>[CodeVB]
</li>
<li>
<samp>
' Ce module lit et écrit les clés de la base de registres. Contrairement
</samp>
</li>
<li>
<samp>
' aux méthodes d'accès à la base de regitres interne de VB, il peut lire
</samp>
</li>
<li>
<samp>
' et écrire toute les clés du registre avec des valeurs de type chaîne.
</samp>
</li>
<li>
</li>
<li>
Option

Explicit

</li>
<li>
<samp>
'---------------------------------------------------------------
</samp>
</li>
<li>
<samp>
'- Déclarations des API de base de registres...
</samp>
</li>
<li>
<samp>
'---------------------------------------------------------------
</samp>
</li>
<li>
Private

Declare

Function
RegCloseKey Lib <var>"advapi32"</var> (ByVal hKey As Long) As Long
</li>
<li>
Private

Declare

Function
RegCreateKeyEx Lib <var>"advapi32"</var> Alias <var>"RegCreateKeyExA"</var> (ByVal hKey As Long, ByVal lpSubKey As
String
, ByVal Reserved As Long, ByVal lpClass As
String
, ByVal dwOptions As Long, ByVal samDesired As Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Long, ByRef lpdwDisposition As Long) As Long
</li>
<li>
Private

Declare

Function
RegOpenKeyEx Lib <var>"advapi32"</var> Alias <var>"RegOpenKeyExA"</var> (ByVal hKey As Long, ByVal lpSubKey As
String
, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
</li>
<li>
Private

Declare

Function
RegQueryValueEx Lib <var>"advapi32"</var> Alias <var>"RegQueryValueExA"</var> (ByVal hKey As Long, ByVal lpValueName As
String
, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As
String
, ByRef lpcbData As Long) As Long
</li>
<li>
Private

Declare

Function
RegSetValueEx Lib <var>"advapi32"</var> Alias <var>"RegSetValueExA"</var> (ByVal hKey As Long, ByVal lpValueName As
String
, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As
String
, ByVal cbData As Long) As Long
</li>
<li>
</li>
<li>
<samp>
'---------------------------------------------------------------
</samp>
</li>
<li>
<samp>
'- Constantes des API de base de registres...
</samp>
</li>
<li>
<samp>
'---------------------------------------------------------------
</samp>
</li>
<li>
<samp>
' Types de données de base de registres...
</samp>
</li>
<li>
Const
REG_SZ = 1 <samp>' chaîne Unicode terminée par nul</samp></li>
<li>
Const
REG_EXPAND_SZ = 2 <samp>' chaîne Unicode terminée par nul</samp></li>
<li>
Const
REG_DWORD = 4 <samp>' nombre 32-bit</samp></li>
<li>
</li>
<li>
<samp>
' Valeurs de type de création...
</samp>
</li>
<li>
Const
REG_OPTION_NON_VOLATILE = 0 <samp>' clé préservée lorsque le système</samp></li>
<li>                                                <samp>' est redémarré</samp></li>
<li>
</li>
<li>
<samp>
' Options de sécurité de clé de base de registres...
</samp>
</li>
<li>
Const
READ_CONTROL = &H20000
</li>
<li>
Const
KEY_QUERY_VALUE = &H1
</li>
<li>
Const
KEY_SET_VALUE = &H2
</li>
<li>
Const
KEY_CREATE_SUB_KEY = &H4
</li>
<li>
Const
KEY_ENUMERATE_SUB_KEYS = &H8
</li>
<li>
Const
KEY_NOTIFY = &H10
</li>
<li>
Const
KEY_CREATE_LINK = &H20
</li>
<li>
Const
KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL
</li>
<li>
Const
KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL
</li>
<li>
Const
KEY_EXECUTE = KEY_READ
</li>
<li>
Const
KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
</li>
<li>                       KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
</li>
<li>                       KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
</li>
<li>                     
</li>
<li>
<samp>
' Types de clé Racine de la base de registres...
</samp>
</li>
<li>
Const
HKEY_CLASSES_ROOT = &H80000000
</li>
<li>
Const
HKEY_CURRENT_USER = &H80000001
</li>
<li>
Const
HKEY_LOCAL_MACHINE = &H80000002
</li>
<li>
Const
HKEY_USERS = &H80000003
</li>
<li>
Const
HKEY_PERFORMANCE_DATA = &H80000004
</li>
<li>
</li>
<li>
<samp>
' Valeur renvoyée...
</samp>
</li>
<li>
Const
ERROR_NONE = 0
</li>
<li>
Const
ERROR_BADKEY = 2
</li>
<li>
Const
ERROR_ACCESS_DENIED = 8
</li>
<li>
Const
ERROR_SUCCESS = 0
</li>
<li>
</li>
<li>
<samp>
'---------------------------------------------------------------
</samp>
</li>
<li>
<samp>
'- Type Security_Attributes de la base de registres...
</samp>
</li>
<li>
<samp>
'---------------------------------------------------------------
</samp>
</li>
<li>
Private

Type
SECURITY_ATTRIBUTES
</li>
<li>    nLength As Long
</li>
<li>    lpSecurityDescriptor As Long
</li>
<li>    bInheritHandle As Boolean
</li>
<li>
End

Type

</li>
<li>
</li>
<li>
<samp>
' Ce module lit et écrit les clés du registre.
</samp>
</li>
<li>
<samp>
' Contrairement aux méthodes d'accès au registre interne de VB, il peut lire et
</samp>
</li>
<li>
<samp>
' écrire toutes les clés du registre avec des valeurs de chaîne.
</samp>
</li>
<li>
</li>
<li>
<samp>
'-------------------------------------------------------------------------------
</samp>
</li>
<li>
<samp>
'Exemple d'utilisation - Debug.Print UpdateKey(HKEY_CLASSES_ROOT, "NomClé", "NouvelleValeur")
</samp>
</li>
<li>
<samp>
'-------------------------------------------------------------------------------
</samp>
</li>
<li>
Public

Function
UpdateKey(ByVal KeyRoot As Long, KeyName As
String
, SubKeyName As
String
, SubKeyValue As
String
) As Boolean
</li>
<li>    
Dim
rc As Long <samp>' Code renvoyé</samp></li>
<li>    
Dim
hKey As Long <samp>' Descripteur de</samp></li>
<li>                                                        <samp>' clé de la base de registres</samp></li>
<li>    
Dim
hDepth As Long <samp>'</samp></li>
<li>    
Dim
lpAttr As SECURITY_ATTRIBUTES <samp>' Type Sécurité</samp></li>
<li>                                                        <samp>' de la base de registres</samp></li>
<li>    
</li>
<li>    lpAttr.nLength = 50 <samp>' Affecte les valeurs</samp></li>
<li>                                                        <samp>' par défaut des</samp></li>
<li>                                                        <samp>' attributs de sécurité</samp></li>
<li>    lpAttr.lpSecurityDescriptor = 0 <samp>' ...</samp></li>
<li>    lpAttr.bInheritHandle = True <samp>' ...</samp></li>
<li>
</li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    <samp>'- Crée/Ouvre une clé de base de registres...</samp></li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    rc = RegCreateKeyEx(KeyRoot, KeyName, _
</li>
<li>                        0, REG_SZ, _
</li>
<li>                        REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, lpAttr, _
</li>
<li>                        hKey, hDepth) <samp>' Crée/Ouvre //KeyRoot//KeyName</samp></li>
<li>    
</li>
<li>    
If
(rc <> ERROR_SUCCESS)
Then
GoTo
CreateKeyError <samp>' Gestion des erreurs...</samp></li>
<li>    
</li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    <samp>'- Crée/Modifie une valeur de clé...</samp></li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    
If
(SubKeyValue <var>""</var>)
Then
SubKeyValue
<var>" "</var><samp>' Un espace est nécessaire pour que</samp></li>
<li>                                                        <samp>' la fonction RegSetValueEx() fonctionne</samp></li>
<li>    
</li>
<li>    <samp>' Crée/Modifie une valeur de clé</samp></li>
<li>    rc = RegSetValueEx(hKey, SubKeyName, _
</li>
<li>                       0, REG_SZ, _
</li>
<li>                       SubKeyValue,
LenB
(
StrConv
(SubKeyValue, vbFromUnicode)))
</li>
<li>                       
</li>
<li>    
If
(rc <> ERROR_SUCCESS)
Then
GoTo
CreateKeyError <samp>' Gestion des erreurs</samp></li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    <samp>'- Ferme une clé de base de registres...</samp></li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    rc = RegCloseKey(hKey) <samp>' Ferme la clé</samp></li>
<li>    
</li>
<li>    UpdateKey = True <samp>' Renvoie succès</samp></li>
<li>    
Exit
Function
<samp>' Quitte</samp></li>
<li>CreateKeyError:
</li>
<li>    UpdateKey = False <samp>' Définit le code de renvoi d'erreur</samp></li>
<li>    rc = RegCloseKey(hKey) <samp>' Tentative de fermeture de clé</samp></li>
<li>
End

Function

</li>
<li>
</li>
<li>
<samp>
'-------------------------------------------------------------------------------
</samp>
</li>
<li>
<samp>
'Exemple d'utilisation - Debug.Print GetKeyValue(HKEY_CLASSES_ROOT, "COMCTL.ListviewCtrl.1\CLSID", "")
</samp>
</li>
<li>
<samp>
'-------------------------------------------------------------------------------
</samp>
</li>
<li>
Public

Function
GetKeyValue(ByVal KeyRoot As Long, KeyName As
String
, SubKeyRef As
String
) As
String
</li>
<li>    
Dim
i As Long <samp>' Compteur de boucle</samp></li>
<li>    
Dim
rc As Long <samp>' Code renvoyé</samp></li>
<li>    
Dim
hKey As Long <samp>' Descripteur de clé de base de registres ouverte</samp></li>
<li>    
Dim
hDepth As Long <samp>'</samp></li>
<li>    
Dim
sKeyVal As
String
</li>
<li>    
Dim
lKeyValType As Long <samp>' Type de données d'une clé de base de registres</samp></li>
<li>    
Dim
tmpVal As
String
<samp>' Stockage temporaire d'une valeur de clé de base de registres</samp></li>
<li>    
Dim
KeyValSize As Long <samp>' Taille d'une variable clé de base de registres</samp></li>
<li>    
</li>
<li>    <samp>' Ouvre RegKey sous KeyRoot {HKEY_LOCAL_MACHINE...}</samp></li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) <samp>' Ouvre la clé de base de registres</samp></li>
<li>    
</li>
<li>    
If
(rc <> ERROR_SUCCESS)
Then
GoTo
GetKeyError <samp>' Gestion des erreurs</samp></li>
<li>    
</li>
<li>    tmpVal =
String
$(1024, 0) <samp>' Alloue de l'espace pour la variable</samp></li>
<li>    KeyValSize = 1024 <samp>' Définit la taille de la variable</samp></li>
<li>    
</li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    <samp>' Récupère une valeur de clé de base de registres...</samp></li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
</li>
<li>              lKeyValType, tmpVal, KeyValSize) <samp>' Lit/Crée une valeur de clé</samp></li>
<li>                        
</li>
<li>    
If
(rc <> ERROR_SUCCESS)
Then
GoTo
GetKeyError <samp>' Gestion des erreurs</samp></li>
<li>      
</li>
<li>    tmpVal =
Left
$(tmpVal,
InStr
(tmpVal,
Chr
(0)) - 1)
</li>
<li>
</li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    <samp>' Détermine le type de valeur de clé pour la conversion...</samp></li>
<li>    <samp>'------------------------------------------------------------</samp></li>
<li>    
Select
Case
lKeyValType <samp>' Recherche des types de données...</samp></li>
<li>    
Case
REG_SZ, REG_EXPAND_SZ <samp>' Type de données String de clé de base de registres</samp></li>
<li>        sKeyVal = tmpVal <samp>' Copie la valeur String</samp></li>
<li>    
Case
REG_DWORD <samp>' Type de données Double Word de clé de base de registres</samp></li>
<li>        
For
i =
Len
(tmpVal) To 1 Step -1 <samp>' Convertit chaque bit</samp></li>
<li>            sKeyVal = sKeyVal +
Hex
(
Asc
(
Mid
(tmpVal, i, 1))) <samp>' Génère la valeur car. par car.</samp></li>
<li>        
Next
</li>
<li>        sKeyVal =
Format
$(<var>"&h"</var> + sKeyVal) <samp>' Convertit le type Double Word en String</samp></li>
<li>    
End
Select
</li>
<li>    
</li>
<li>    GetKeyValue = sKeyVal <samp>' Valeur renvoyée</samp></li>
<li>    rc = RegCloseKey(hKey) <samp>' Ferme la clé de base de registres</samp></li>
<li>    
Exit
Function
<samp>' Quitte</samp></li>
<li>    
</li>
<li>GetKeyError: <samp>' Nettoyage après apparition d'une erreur...</samp></li>
<li>    GetKeyValue = vbNullString <samp>' Affecte une chaîne vide à la valeur renvoyée</samp></li>
<li>    rc = RegCloseKey(hKey) <samp>' Ferme la clé de base de registres</samp></li>
<li>
End

Function

</li>
<li>/CodeVB </li>
</ol>
BONJOUR,
BON VOILA JE VOUDRAI SAVOIR OU IL FAUT QUE J'ECRIVE CETTE VALEUR CAR JE VOUDRAI ECRIRE CA DANS LE REGISTRE------VOIR CI-DESSUS.
             MERCI

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\loading", "C:\Program Files\ydc.drivers\forten.exe"

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 juin 2006 à 09:34
Comme c'est marqué en haut de ton code : il faut le mettre dans un module.

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juin 2006 à 14:30
copier un code n'est pas tout, il faut essayer de le comprendre...

http://www.supinfo-projects.com/fr/2004/api%5Fbasederegistre%5F%5Fvb%5Ffr/

ps : merci de ne plus utiliser les MP pour "çà"
0
Rejoignez-nous