VBScript : Modifier le registre

Si vous ne savez pas ce que sont les clés du registre,vous pouvez consulter préalablement la page relative à la base de registre.

Le script suivant nous propose d'introduire ou de supprimer une valeur dans le registre.

Attention : si vous exécutez ce script et si vous possédez un bon antivirus, ce dernier vous retournera une alerte signalant qu'un script tente d'écrire dans la base de registre... C'est normal, c'est ce que vous désirez faire.

  1. Dim WshShell, bKey, pKey, quest
  2. Set WshShell = WScript.CreateObject("WScript.Shell")
  3. on error resume next
  4. pKey = "Clé HKCU\virusScanner\Version\"
  5. bKey = WshShell.RegRead(pKey)
  6. 'Wscript.Echo Err.Number
  7. If (Err <> 0) then
  8. 'Wscript.Echo Computer & " " & Err.Description
  9. Err.Clear
  10. WScript.Echo "Cl&eacute; " & pKey & " inexistante"
  11. quest = MsgBox("D&eacute;sirez-vous cr&eacute;er la cl&eacute;",vbYesNo + 256 + vbQuestion, "Cr&eacute;er la cl&eacute;")
  12. if (quest = vbYes) then
  13. WshShell.RegWrite pKey, "2.5.1"
  14. WScript.Echo "Cl&eacute; " & pKey & " cr&eacute;&eacute;e"
  15. end if
  16. else
  17. WScript.Echo pKey & " : " & WshShell.RegRead("HKCU\virusScanner\Version\")
  18. quest = MsgBox("D&eacute;sirez-vous supprimer la cl&eacute;",vbYesNo + 256 + vbCritical, "supprimer la cl&eacute;")
  19. if (quest = vbYes) then
  20. WshShell.RegDelete pKey
  21. WScript.Echo "Cl&eacute; supprim&eacute;e"
  22. else
  23. WScript.Echo "Cl&eacute; non supprim&eacute;e"
  24. end if
  25. end if
  26. 'WScript.Echo "traitement termin&eacute;"

Procédure pas à pas

Nous devons d'abord déclarer nos variables. VBScript n'est pas typé, les variables sont toutes du type variant.

Dim WshShell, bKey, pKey, quest

Comme aucune référence n'est définie en VBScript, nous faisons appel aux objets au moment de leur utilisation. Nous créons donc une instance de l'objet WScript.Shell

Set WshShell = WScript.CreateObject("WScript.Shell")

Comme il est possible que la clé n'existe pas, nous devons intercepter l'erreur. Ce bout de code permet de passer à l'instruction suivante lorsqu'une erreur est rencontrée.

on error resume next

Nous affectons à la variable pKey le chemin de la clé (path).

Ensuite, nous affectons le résultat de la lecture de la clé à la variable bKey. C'est à ce moment qu'une erreur serait retournée par le système si la clé n'existe pas. Comme nous avons déclaré que nous désirons intercepter les erreurs, le script continue.
Nous pouvons alors afficher le numéro d'erreur, si nous enlevons l'apostrophe qui commente la ligne.

pKey = "Clé HKCU\virusScanner\Version\"
bKey = WshShell.RegRead(pKey)
'Wscript.Echo Err.Number

Si une erreur est rencontrée, c'est que la clé n'existe pas. Nous pouvons stopper l'interception des erreurs, et afficher un message pour déclarer que la clé est inexistante.
Si nous désirons afficher plus de précisions sur l'erreur, nous pouvons ôter l'apostrophe qui commente la ligne.

Remarque : il était possible de soumettre la condition if à la valeur exacte retournée.
En cas de succès, la valeur retournée par le message d'erreur est 0. Il nous suffit de déclarer que dans tous les cas d'erreurs la clé n'est pas présente...

Message d'erreur généré :

  • sans "on error resume next" : 80070002
  • avec "on error resume next" et "Wscript.Echo Err.Number" : -2147024894
  • avec "on error resume next" et "Wscript.Echo Err.Description" : Invalid root in registery key "HKCU\virusScanner\Version\"

If (Err <> 0) then

'Wscript.Echo Computer & " " & Err.Description
Err.Clear

WScript.Echo "Clé " & pKey & " inexistante"

.../
suite du code
/...
else
.../
suite du code
/...
end if

Si la clé n'existe pas, nous demandons s'il faut la créer ou non. Pour plus de renseignements, vous pouvez consulter la page traitant de la syntaxe de la fonction MsgBox.

Si le bouton oui est cliqué, la clé est inscrite et un message de confirmation s'affiche.

quest = MsgBox("Désirez-vous créer la clé",vbYesNo + 256 + vbQuestion, "Créer la clé")
if (quest = vbYes) then

WshShell.RegWrite pKey, "2.5.1"
WScript.Echo "Clé " & pKey & " créée"
end if

Dans le cas où la clé existe, nous demandons s'il faut la supprimer...

WScript.Echo pKey & " : " & WshShell.RegRead("HKCU\virusScanner\Version\")
quest = MsgBox("Désirez-vous supprimer la clé",vbYesNo + 256 + vbCritical, "supprimer la clé")
if (quest = vbYes) then

WshShell.RegDelete pKey
WScript.Echo "Clé supprimée"
else
WScript.Echo "Clé non supprimée"
end if

Bon, je sais qu'il est stupide de créer une clé, puis de la supprimer de suite... mais ces petits bouts de codes sont là pour montrer ce qu'il est possible de faire.
A vous de les adapter à vos besoins.

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

18 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329
Document créé le 11/06/04 06:01, dernière modification le Lundi 24 Mai 2010, 11:37
Source du document imprimé : http://www.gaudry.be/vbs-registre.html Document affiché 19 fois ce mois de Septembre.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15815 documents
444 astuces.
546 niouzes.
3096 definitions.
344 membres.
8092 messages.

Document genere en :
0,39 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Il n'existe rien de constant si ce n'est le changement.

Bouddha
 
l'infobrol
Nous sommes le Lundi 06 Septembre 2010, 12:39, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)