browser64
Messages postés112Date d'inscriptiondimanche 24 avril 2005StatutMembreDernière intervention 5 décembre 2010
-
20 juin 2006 à 05:48
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDerniè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>
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,
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