begin process at 2012 02 10 01:34:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBScript

 > VÉRIFIER SI UNE CLÉ EXISTE DANS LA BASE DE REGISTRE

VÉRIFIER SI UNE CLÉ EXISTE DANS LA BASE DE REGISTRE


 Information sur la source

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBScript Niveau :Débutant Date de création :12/06/2003 Date de mise à jour :28/08/2003 09:12:16 Vu :13 256

Auteur : Mrx3

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

J'ai réédité la fonction pour qu'elle soit plus sûre de fonctionner et surtout pour qu'elle ressemble plus à FileExists et FolderExists.
------------------------------------ ----------
Voici une fonction simple à inclure dans tout fichier VBS.
Si la clé existe, la fonction renverra True, sinon la False.      

Source

  • 'voici le code à insérer dans vos scripts :
  • Function RegExists(value)
  • On Error Resume Next
  • Set WS = CreateObject("WScript.Shell")
  • val = WS.RegRead(value)
  • If (Err.number = -2147024893) or (Err.number = -2147024894) Then
  • RegExists = False
  • Else
  • RegExists = True
  • End If
  • End Function
  • 'voici un exemple :
  • If RegExists ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32") Then
  • MsgBox "La valeur existe."
  • Else
  • MsgBox "La valeur n'existe pas."
  • End If
  • 'ça c'était pour vérifier l'existence de valeurs, pour vérifier l'existence d'une clé, il faudra rajouter un \ à la fin (la fonction regardera si la valeur par défaut de la clé existe donc si la clé existe), comme çà :
  • If RegExists ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\") Then
  • MsgBox "La clé existe."
  • Else
  • MsgBox "La clé n'existe pas."
  • End If
'voici le code à insérer dans vos scripts :

Function RegExists(value)
On Error Resume Next
Set WS = CreateObject("WScript.Shell")
val = WS.RegRead(value)
If (Err.number = -2147024893) or (Err.number = -2147024894) Then
RegExists = False
Else
RegExists = True
End If
End Function

'voici un exemple :

If RegExists ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32") Then
MsgBox "La valeur existe."
Else
MsgBox "La valeur n'existe pas."
End If 

'ça c'était pour vérifier l'existence de valeurs, pour vérifier l'existence d'une clé, il faudra rajouter un \ à la fin (la fonction regardera si la valeur par défaut de la clé existe donc si la clé existe), comme çà :

If RegExists ("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\") Then
MsgBox "La clé existe."
Else
MsgBox "La clé n'existe pas."
End If  

 Conclusion

Je me suis dit que ça serait pratique vu qu'il existe des FileExists, FolderExists, mais pas ça.    


 Sources de la même categorie

Source avec Zip Source avec une capture RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip Source avec une capture [VBS] SPLASH SCREEN EN VBSCRIPT par hackoo
Source avec Zip Source avec une capture [VBS] GOOGLE EASTER EGGS par hackoo
Source avec Zip Source avec une capture FILE2COMPARE: COMPARAISON DE DEUX FICHIERS LIGNE PAR LIGNE par hackoo
Source avec Zip Source avec une capture [VBS] COMMENT CRÉER UN DOSSIER ET LE PROTÉGER PAR MOT DE PAS... par hackoo

Commentaires et avis

Commentaire de ThunderPsycho le 13/06/2003 07:31:54

La variable 'rtrn' n'est pas très utile ici...
J'aime bien l'exemple d'utilisation de la fonction ;o)))

Commentaire de Patrice99 le 13/06/2003 09:40:34

Ton exemple ne marche pas. Une recherche avec Google montre que ce n'est pas aussi simple, car on ne peut pas distinguer si une clé existe ou bien si elle n'a pas de valeur par défaut, et même dans ce cas, ça ne marche pas pour savoir par exemple si un controle activeX est enregistré ou pas. Je n'ai toujours pas trouvé la solution. Pourtant, avec VB.NET c'est très facile :
Public Shared Function bCleRegistreExiste(ByVal sCle$) As Boolean

    ' Vérifier si une clé existe dans la base de registre
    '  c'est utile pour savoir si un contrôle ActiveX est enregistré

    Dim sValCle$
    Try
        '  This call goes to the Catch block if the registry key is not set.
        Dim myRegKey As Microsoft.Win32.RegistryKey = _
            Microsoft.Win32.Registry.ClassesRoot
        myRegKey = myRegKey.OpenSubKey(sCle)
        Dim sSousCle$ = "" ' Sous-clé par défaut
        Dim oValue As Object = myRegKey.GetValue(sSousCle)
        sValCle = CStr(oValue)
        bCleRegistreExiste = True ' On peut lire cette clé, donc elle existe
    Catch
        sValCle = ""
    End Try
    'MsgBox(sValCle)
    Exit Function

End Function

Si quelqu'un trouve la solution pour VB6, je suis preneur !

Commentaire de Mrx3 le 13/06/2003 11:01:37

Mais ça serait pas du Visual Basic ça ?

Commentaire de Mrx3 le 13/06/2003 11:02:28

Mais ça serait pas du Visual Basic ça ?

Commentaire de Patrice99 le 13/06/2003 12:11:36

Non ! Microsoft.Win32.RegistryKey est une classe bien pratique du framework .NET, pas de VB6 hélas ! mais je suis sûr que quelqu'un va trouver l'équivalent de la fonction en VB6.

Commentaire de ThunderPsycho le 13/06/2003 12:47:51

Houla les gars mais kestu racontes Patrice99  c juste du Windows Host Scripting Object et ca marche très bien, je l'utilisais deja pas mal...

Commentaire de Patrice99 le 13/06/2003 12:54:53

Ca marche peut être en VBScript, mais pas en VB6 (en tout cas pas en VBA : je teste dans un module Access 97)

Commentaire de ThunderPsycho le 13/06/2003 13:06:04

ah si je t'assure

Commentaire de ThunderPsycho le 13/06/2003 13:06:47

ah si je t'assure
m'en suis encore servi ce matin
moi je l'utilise sans fonction, mais le principe c le meme, lire une cle et gerer l'erreur avec le On error resume next...

Commentaire de Patrice99 le 14/06/2003 09:55:27

Hé bien je ne sais pas pourquoi chez moi ça ne marche pas, ce qui est sûr c'est que Google me dit que je ne suis pas le seul !
Pour les contrôles ActiveX, il suffit de faire CreateObject : s'il n'y a pas d'erreur, c'est que le contrôle est bien enregistré : c'est très simple, mais cela oblige à instancier le contrôle effectivement.

Commentaire de TFC le 26/06/2003 11:45:57

Ca marche tres bien en VB6!!
Sympa ce tit code pe etre utile merci Mrx3 :)

Commentaire de NiKo63 le 03/07/2003 10:30:52

Nikel, en effet, cela fonctionne sous VB6, bon ok on peut 'améliorer" la fonction mais au moins le résultat est là, on sait si une clef existe ou pas...

Merci !

Commentaire de shadow575 le 27/06/2004 16:58:44

je suis peut être idiot mais, c'est quoi une clé ? et une base de registre ?

je suis dsl mais je débute et je connais pas trop.

Commentaire de denispixies le 20/12/2011 14:33:34

Bonjour,

merci pour le script qui fonctionne très bien.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales