FAQ VBScriptConsultez toutes les FAQ
Nombre d'auteurs : 16, nombre de questions : 108, dernière mise à jour : 2 mars 2019 Ajouter une question
Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et des membres du forum VB.
Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributions VBScript.
Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacter par MP ThierryAIM ou bbil.
L'équipe de rédaction de Developpez.com vous remercie pour votre participation passée et à venir.
- Comment manipuler la base de registre ?
- Comment écrire dans la base de registre ?
- Comment lire la base de registre ?
- Comment supprimer une "valeur" où une clé de la base de registre ?
- Comment associer une extension à un programme ?
- Comment désactiver le gestionnaire des tâches ou la séquence de touches Ctrl-Alt-Suppr ?
- Comment ouvrir le registre Windows à une clé spécifiée ?
L'objet WshShell possède trois méthodes permettant de manipuler la base de registre :
- RegWrite : pour écrire dans la base de registre ;
- RegRead : pour lire une entrée de la base de registre ;
- RegDelete : pour effacer une clef ou sa valeur de la base de registre.
Ces trois méthodes utilisent comme premier paramètre le nom de la clé concernée. Pour, construire ce nom, des abréviations peuvent être utilisées :
Nom de clé racine | Abréviation |
HKEY_CURRENT_USER | HKCU |
HKEY_LOCAL_MACHINE | HKLM |
HKEY_CLASSES_ROOT | HKCR |
HKEY_USERS | HKEY_USERS |
HKEY_CURRENT_CONFIG | HKEY_CURRENT_CONFIG |
Pour plus d'informations sur la base de registre, et quelques-unes des utilisations possible, voir la faq Windows XP : La base de registre.
Pour écrire dans la base de registre, on utilise la méthode RegWrite de l'objet WshShell
la documentation Microsoft nous décrit la fonction ainsi :
object.RegWrite(strName, anyValue [,strType])
Arguments
object Objet WshShell.
strName Valeur de chaîne indiquant le nom de la clé, le nom de la valeur ou la valeur que vous voulez créer, ajouter ou modifier.
anyValue Nom de la nouvelle clé que vous voulez créer, nom de la valeur que vous voulez ajouter à une clé existante ou nouvelle valeur que vous voulez assigner à un nom de valeur existant.
strType Facultatif. Valeur de chaîne indiquant le type de données de la valeur
Le paramètre facultatif strType permet d'indiquer le type données :
Nom de clé racine | strType |
Chaîne | REG_SZ |
Chaîne | REG_EXPAND_SZ |
Nombre entier | REG_DWORD |
Nombre entier | REG_BINARY |
Code vb : | Sélectionner tout |
1 2 3 | Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegWrite "HKCU\Software\dvp-faqvbs\montest",now |
La fonction now renvoie ici la date et l'heure courante sous la forme d'une chaîne de caractères.
La Méthode RegRead permet de lire la base de registre. Elle ne prend qu'un argument : le nom de la clé ( qui peu comporter des abréviations ..)
Code vb : | Sélectionner tout |
1 2 3 | Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") msgbox WshShell.RegRead ("HKCU\Software\dvp-faqvbs\montest") |
La méthode RegDelete permet d'effacer une entrée de la base de registre. Elle ne prend qu'un argument : le nom de la clé ( qui peu comporter des abréviations ..)
Code vb : | Sélectionner tout |
1 2 3 | Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\montest") |
Cette même méthode permet aussi d'effacer une clé (en terminant le nom de la clé par un \):
Code vb : | Sélectionner tout |
1 2 3 | Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\") |
Le principe repose sur la création de plusieurs clés dans la base de registre. Une des méthodes est l'utilisation du Windows Script Host Object Model.
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | Dim MaCle Set MaCle = CreateObject("WScript.Shell") 'nom de votre type de fichier MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\", "Test Ext", "REG_SZ" 'commande a exécuter pour ouvrir les fichiers de ce type MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\shell\open\command\", "C:\jmarc\FAQ\TestExt.exe %1", "REG_SZ" 'icone à utiliser pour représenter les fichiers de ce type, ici la troisième icone contenue dans TestExt.exe '(la première icone a l'index 0) MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\DefaultIcon\", "C:\jmarc\FAQ\TestExt.exe,2", "REG_SZ" 'extension correspondant à ce type de fichier MaCle.RegWrite "HKEY_CLASSES_ROOT\.jmr\", "Test Ext", "REG_SZ" |
Suite à l'application de ce script, tout fichier ayant une extension ".jmr" sera ouvert avec le programme TestExt.exe.
Pour Windows 2000 et supérieur :
Cette astuce permet de désactiver ou d'activer le gestionnaire des tâches à partir du code de votre programme et donc, d'inhiber la séquence de touches Ctrl-Alt-Suppr.
Lorsque le gestionnaire est désactivé, le système renvoie un message d'avertissement (à utiliser avec précaution) :
Désactiver :
Code vb : | Sélectionner tout |
1 2 3 | Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", "1" Set WshShell = Nothing |
Activer :
Code vb : | Sélectionner tout |
1 2 3 | Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", "" Set WshShell = Nothing |
En utilisant Regedit.exe et en créant une clé spécifique :
Code vb : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Option Explicit Dim WS, CurKey, Path, tmp, cmp Const SpecKey = "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Lastkey" If GetLocale = 1033 Then cmp = "My Computer\" If GetLocale = 1036 Then cmp = "Poste de travail\" Set WS = CreateObject("WScript.Shell") Path = InputBox("Entrez le chemin de clé à ouvrir", "Ouvrir une clé du registre") If Path = "" Then MsgBox "Opération non effectuée !", vbExclamation, "Opération annulée" Else tmp = Mid(Path, InStr(1,Path,"\")) CurKey = VerifyEntry(Path) & tmp CurKey = cmp & CurKey ' Selon la version de Windows (FR ou EN) My Computer ou Poste de travail WS.RegWrite SpecKey, CurKey, "REG_SZ" WS.Run "Regedit.exe", 1, True End If ' ================== Function VerifyEntry(strIn) ' Fonction de transformation des noms abrégés des racines en noms longs ' pour pouvoir l'ouvrir, sinon l'opération échouera Dim Ret strIn = Left(strIn,InStr(1,strIn,"\") - 1) Select Case UCase(strIn) Case "HKLM" : Ret = "HKEY_LOCAL_MACHINE" Case "HKCU" : Ret = "HKEY_CURRENT_USER" Case "HKCR" : Ret = "HKEY_CLASSES_ROOT" Case "HKUS" : Ret = "HKEY_USERS" Case "HKCC" : Ret = "HKEY_CURRENT_CONFIG" Case "HKEY_LOCAL_MACHINE", "HKEY_CURRENT_USER", "HKEY_CLASSES_ROOT", "HKEY_USERS", "HKEY_CURRENT_CONFIG" : Ret = strIn Case Else : MsgBox "Erreur de données entrées !" : Wscript.Quit 0 End Select VerifyEntry = Ret End Function |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.