Hotline pc one faq windows  
Hotline pc line
Hotline PC - contact Hotline PC - Vista Hotline PC - Windows XP Hotline PC - dossiers Hotline PC - registre Hotline PC - reseaux Hotline PC - applications Hotline PC - ms-dos Hotline PC - gravure Hotline PC - autres
Google
 
Forum
Fonds d'écran
Sonneries
Sonneries






Le Registre Windows et les scripts

Une faq sur le langage de scripts et les meilleures façons de modifier le Registre Windows.

Dernière mise à jour : 22/11/2005


Windows Scripting Host et le Registre
Modifier le Registre de tous les profils d'utilisateurs
Tweakomatic : Manipuler le Registre d'un ordinateur distant

Windows Scripting Host et le Registre

Windows Host scripting propose une collection d'objets COM vous permettant d'utiliser les API Windows. Sous Windows XP, cette plate-forme de programmation est livrée avec les deux moteurs que sont Jscript et VBScript, ce dernier étant un sous-ensemble des fonctions disponibles dans Visual Basic (VB). Les fichiers écrits en VBScript porteront tous l'extension .vbs.
WHS offre deux interpréteurs que sont Wscript.exe et Csript.exe. Bien que les différences soient ténues, un message de sortie sera affiché différemment selon que vous vous servez de Csript ou de son frère jumeau. Le script doit créer un objet WshShell (qui représente le Shell et vous donne donc accès aux outils de modification du Registre).
Par défaut, il existe trois méthodes :
* RegDelete : permet de supprimer une donnée dans le Registre.
* RegRead : permet de lire une donnée dans le Registre.
* RegWrite : permet d'écrire une donnée dans le Registre.
Les syntaxes sont les suivantes :
* WshShell.RegRead "Clé ou Valeur"
* WshShell.RegDelete "Clé ou Valeur"
* WshShell.RegWrite "Clé, Valeur, Données de la valeur
La méthode RegRead lit la clé ou la valeur que vous spécifiez avec l’argument correspondant. Chaque méthode accède aux clés du registre d’après le nom d’accès complet des clés. Vous pouvez utiliser ces noms de clés prédéfinis :
* HKEY_CURRENT_USER (ou HKCU)
* HKEY_CLASSES_ROOT (ou HKCR)
* HKEY_LOCAL_MACHINE (ou HKLM)
* HKEY_USERS
* HKEY_CURRENT_CONFIG
La méthode RegWrite inscrit dans le Registre la sous-clé ou la valeur que vous spécifiez. Si le nom du premier paramètre se termine par une barre oblique inverse (\), RegWrite l'interprétera comme une sous-clé. Sinon, RegWrite écrit l'argument comme une valeur. Vous pouvez utiliser un argument optionnel pour définir le type de la valeur :
* REG_SZ ou REG_EXPAND_ SZ écrit des valeurs de chaîne.
* REG_DWORD écrit une valeur entière 32 bits.
* REG_BINARY écrit une valeur binaire 32 bits.
1) Cliquez sur Démarrer/Exécuter puis saisissez notepad
2) Saisissez le contenu de votre script.
3) Cliquez sur Fichier/Enregistrer.
4) Dans nom de fichier, saisissez ceci : test.vbs
Vous devez donc "écraser" la mention *.txt.
5) Avec le bouton droit de la souris, cliquez sur le fichier généré puis sur la commande Modifier.
Information : Quand vous lancez un fichier de script, il est normal que votre antivirus signale qu'un programme tente d'écrire dans le Registre. Vous pouvez autoriser exceptionnellement l'exécution du script ou, temporairement, désactiver le blocage des scripts dans les paramètres de configuration de votre antivirus.
Voici un premier exemple de script :

Dim WS, NoNetCrawling
Set WS = WScript.CreateObject("WScript.Shell")
NoNetCrawling = WS.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\NoNetCrawling")
if NoNetCrawling="0" then
WS.Popup "La recherche automatique des dossiers et des imprimantes partagée est activée"
WS.Popup "Nous allons la désactiver"
WS.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\NoNetCrawling", 1, "REG_DWORD"
else
WS.Popup "La recherche automatique des dossiers et des imprimantes partagée est déjà désactivée"
end if

La première ligne déclare les variables dont nous allons nous servir : WS pour WshShell et NoNetCrawling pour le contenu des données de la valeur du Registre NoNetCrawling. Le choix des noms de variables est laissé à votre convenance. Une variable est simplement une enveloppe à laquelle nous attribuons un premier contenu puis, éventuellement, d'autres contenus en fonction des besoins de notre script ou des saisies de l'utilisateur. En bref, son contenu est susceptible de varier. C'est la fonction interne Dim qui se charge de la déclaration des variables.
La seconde ligne permet de créer l'objet afin de pouvoir nous servir des méthodes proposées par Wscript.Shell.
La troisième ligne se contente de lire le contenu de la valeur NoNetCrawling. Une fois ces données récupérées, la variable NoNetCrawling équivaut à la valeur trouvée. Nous posons alors une condition if - then.
Si les données de la valeur sont égales à 0, nous affichons deux boîtes de dialogue successives.
Nous écrivons, dans cette valeur DWORD, le chiffre 1 afin d'activer cette stratégie.
Le contrôle Else permet de définir l'instruction à lancer si la condition n'est pas remplie.
Nous devons terminer l'exécution de la condition par l'instruction End if.
Rappelons que cette commande est accessible en mode d'interface graphique en cliquant, dans l'Explorateur, sur Outils/Options des dossiers/Affichage.
Voici d'autres exemples de scripts :

- Retrouver le Product ID de sa version de Windows :
Chaque Product ID correspond à une version déterminée de Windows. Voici un script permettant de l'afficher :

Set WS = WScript.CreateObject("WScript.Shell")
Dim WS, e, a, b
e = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\"
b = ws.RegRead(p1 & "ProductId")
a = "Retrouver l'ID de votre version de Windows"
c = InputBox("Voici le Product ID de votre ordinateur", a, b)

Nous définissons quatre variables personnalisées nommées e, a, b et c.
* La première variable désigne l'arborescence du Registre qui sera lue.
* La seconde, b, désigne les données de la valeur contenue par la valeur chaîne ProductId.
Signalons que l'opérateur & permet de concaténer les expressions et que cette instruction se lit de comme ceci : ws.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId")
* La variable c permet de créer une boîte de dialogue en utilisant la fonction interne Inputbox.
* Les variables a et b permettent de définir le titre et le résultat de la commande ws.RegRead

- Changer le son associé aux erreurs Windows :

Cette fois-ci, nous allons modifier une valeur chaîne en proposant à l'utilisateur de spécifier lui-même l'emplacement et le nom du fichier .wav indiqué. Voici le contenu du script :

Set WS = WScript.CreateObject("WScript.Shell")
Dim WS, e, a, b
e = "HKLM\SOFTWARE\Microsoft\DrWatson\"
a = "Changer l'avertissement sonore"
b = InputBox("Saisissez l'emplacement et le nom du fichier wave puis cliquez sur OK", a)
If b <> "" Then
ws.RegWrite e & "WaveFile", b
End If

Nous créons quatre variables nommées WS, e, a et b.
* La variable e correspond à l'arborescence du Registre qui sera modifiée.
* La variable a correspond au titre de notre fenêtre.
* La variable b correspond au contenu qui s'affichera.
* La fonction interne InputBox nous permet d'afficher une fenêtre standard dont le titre sera équivalent à la variable a.
Si l'utilisateur saisit quelque chose (en fait, si la variable b a été renseignée par l'utilisateur et donc qu'elle est différente de rien ("if b <> ""), alors nous lançons l'instruction suivante : "Dans le Registre écrit dans l'arborescence définie par la variable e (HKLM\SOFTWARE\Microsoft\DrWatson) une valeur chaîne nommée WaveFile avec, comme données, le contenu de la variable b".
L'opérateur & permet de concaténer les différentes valeurs d'une instruction. L'instruction de la dernière ligne se traduit donc par ceci : ws.RegWrite "HKLM\SOFTWARE\Microsoft\DrWatson\WaveFile", Fichier.wav

- Changer la couleur du texte sélectionné :

Voici une suggestion possible :

Set WS = WScript.CreateObject("WScript.Shell")
Dim WS, e, a, b, c, dialogue
e = "HKEY_CURRENT_USER\Control Panel\Colors\"
a = ws.RegRead(e & "HilightText")
b = "Changer les valeurs RVB"
c = InputBox("Saisissez vos nouvelles valeurs dans ce format : 0 0 255", b, a)
If c <> "" Then
ws.RegWrite e & "HilightText", c
dialogue = MsgBox("Vous devez redémarrer pour que les changements soient effectifs.", vbOKOnly,"Terminé")
End If

Le principe est identique au script précédent, à la différence que nous utilisons une autre fonction interne à VBScript, qui permettra l'affichage d'une boîte de dialogue contenant un message d'avertissement. Le paramètre vbOKOnly spécifie de n'afficher que le bouton OK. Notez que les données par défaut sont celles-ci : 255 255 255.

- Forcer l'affichage de certaines extensions de fichier :

La présence de la valeur chaîne NeverShowExt empêche l'affichage des extensions de certains fichiers. Le principe du script est donc de supprimer cette valeur. La seule astuce consiste à ajouter, en début du script, une instruction empêchant VBScript d'afficher un message d'erreur si une entrée spécifiée n'est pas trouvée dans le Registre.

On Error Resume
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegDelete "HKCR\DocShortcut\NeverShowExt"
WshShell.RegDelete "HKCR\InternetShortcut\NeverShowExt"
WshShell.RegDelete "HKCR\lnkfile\NeverShowExt"
WshShell.RegDelete "HKCR\piffile\NeverShowExt"
WshShell.RegDelete "HKCR\ShellScrap\NeverShowExt"
Dim Dialogue
Dialogue = MsgBox("Vous devez redémarrer afin que les changements soient effectifs", vbOKOnly,"Terminé")

Vous pouvez revenir en arrière en vous aidant d'un autre fichier de script construit en fonction de ce modèle : WshShell.RegWrite "HKCR\lnkfile\NeverShowExt", "", "REG_SZ"

- Désactiver l'aperçu des images et des télécopies Windows :

Afin d'appliquer manuellement cette astuce, procédez comme suit :
1) Ouvrez HKEY_CLASSES_ROOT\SystemFileAssociations\image\ShellEx\ContextMenuHandlers\ShellImagePreview.
2) Éditez la valeur chaîne (par défaut) et supprimez son contenu.
Par défaut, celle-ci contient ceci comme données : {e84fda7c-1d6a-45f6-b725-cb260c236066}
Voici donc une solution :

Dim WS, a, Dialogue, b, c, Titre
Set WS = WScript.CreateObject("WScript.Shell")
b = "HKEY_CLASSES_ROOT\SystemFileAssociations\image\ShellEx\ContextMenuHandlers\ShellImagePreview\"
c = "REG_SZ"
a = ""
WS.RegWrite b, a, c
Titre = "L'apperçu des images et des télécopies Windows est maintenant désactivé" & vbCR
Titre = Titre & "Vous devez relancer votre session interactive" & vbCR
Dialogue = MsgBox(Titre,4096,"Terminé")

La méthode consiste simplement à créer une valeur chaîne vide. L'instruction WS.RegWrite b, a, c peut donc se lire de cette façon : WS.RegWrite "HKEY_CLASSES_ROOT\SystemFileAssociations\image\ShellEx\ContextMenuHandlers\ShellImagePreview\", "", "REG_SZ"

- Changer les icones affectées aux dossiers système :

Si vous appliquez cette astuce manuellement, procédez comme suit.
Voici pour l'icone des dossiers quand ils seront fermés :
1) Ouvrez HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons.
2) Créez une valeur chaîne nommée 3
3) Éditez cette entrée puis saisissez, comme données de la valeur, l'emplacement et le nom de votre fichier d'icone.
Voici pour l'icone des dossiers quand ils seront ouverts :
1) Créez une valeur chaîne nommée 4
2) Éditez cette entrée puis saisissez, comme données de la valeur, l'emplacement et le nom de votre fichier d'icone.
Afin de revenir aux paramètres par défaut, supprimez le contenu de ces deux valeurs chaîne.
Voici une autre solution possible :

Set WS = WScript.CreateObject("WScript.Shell")
Dim WS, b, a, e, d, c, item, dialogue, titre
a = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons\"
a = a & "3"
item = "REG_SZ"
b = ""
WS.RegWrite a, b, item
a = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons\"
a = a & "4"
item = "REG_SZ"
b = ""
WS.RegWrite a, b, item
e = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons\"
b = WS.RegRead(e & "3")
d = "Changer l'icône des dossiers"
c = InputBox("Inscrivez l'emplacement exact de votre fichier .ico", d, b)
If c <> "" Then
WS.RegWrite e & "3", c
End If
e = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons\"
b = WS.RegRead(e & "4")
d = "Changer l'icône des dossiers ouverts"
c = InputBox("Inscrivez l'emplacement exact de votre fichier .ico", d, b)
If c <> "" Then
WS.RegWrite e & "4", c
End If
titre = "Vous devez redémarrez votre ordinateur"
dialogue = MsgBox(titre,64,"Terminé")


Modifier le Registre de tous les profils d'utilisateurs à l'exception de celui sur lequel vous êtes connecté

1) Vous pouvez télécharger une archive ZIP à partir de cette adresse : http://www.windowsitpro.com/windowsnt20002003faq/Article/ArticleID/48506/windowsnt20002003faq_48506.html
2) Décompressez l'archive puis éditez le fichier .txt qui est présent.
Dans un souci de clarification ne laissez que, par exemple, ceci entre les lignes ' The work portion. Change this to anything you want to perform et ' End of the work portion :
objReg.GetStringValue HKEY_USERS, "TempHive\Software\Microsoft\Windows\CurrentVersion\Explorer", "Logon User Name", userName
objReg.SetStringValue HKEY_USERS, "TempHive\Control Panel\Desktop" , "Wallpaper", "c:\windows\web\wallpaper\Colline verdoyante.bmp"
objReg.SetStringValue HKEY_USERS, "TempHive\Control Panel\Desktop" , "WallpaperStyle", "2"
3) Enregistrez les changements puis changez l'extension du fichier en .vbs.
4) Double-cliquez dessus afin de propager les modifications faites dans le Registre à l'ensemble des utilisateurs déclarés sur votre machine.
Bien entendu, rien ne vous empêche d'ajouter d'autres valeurs à modifier. En toute logique, il est préférable de procéder à des modifications à partir du compte Administrateur ou de votre propre compte (si vous ne souhaitez pas que ces modifications s'appliquent à vous-même).

Tweakomatic : Manipuler le Registre d'un ordinateur distant

Microsoft a conçu cet outil comme étant un pendant logique de Tweak-UI. Il vous permet de changer un certain nombre de paramètres dans le Registre. Téléchargez le fichier tweakomatic.EXE à partir de cette adresse : www.microsoft.com/downloads/details.aspx?FamilyID=BD328D1E-6C01-4447-BD7C-C09646D722C8&displaylang=en. Double-cliquez dessus afin de décompresser ces trois fichiers : tweakomatic_readme.doc, tweakomatic.hta et tweakomatic.mdb. Double-cliquez sur le fichier .hta. Le principe consiste à générer puis à lancer automatiquement un script en piochant les valeurs utiles dans la base de données du fichier "Access". Prenons un exemple :
1) Dans la liste déroulante Select a manageable component from this list, cliquez sur Windows settings.
2) Dans la liste déroulante Select a task category from this list, sélectionnez Command windows settings.
3) Dans la liste déroulante Select an individual task from this list, cliquez sur Enable command window QuickEdit mode.
Le script sera automatiquement généré dans la rubrique Script for carrying out this task.
4) Cliquez sur le bouton Run Script.
Les paramètres du Registre seront immédiatement modifiés.
Il vous est possible de spécifier le nom d'un ordinateur distant en cliquant sur le bouton Set Computer Name.
Les boutons placés sous la rubrique Script for retrieving the current task setting vous permettent de restaurer les paramètres par défaut.
Le bouton Change Value vous permet de modifier la valeur qui est insérée par défaut dans le script sélectionné.
Le bouton Master Script vous permet d'enregistrer un script en ajoutant à celui-ci vos différents enregistrements.
Il vous est possible de définir d'autres rubriques en suivant cette procédure :
1) Double-cliquez sur le fichier tweakomatic.mdb.
2) Ouvrez la table nommée Tweaks.
3) Saisissez les nouvelles entrées en remplissant chaque champ de la table.


blog, bookmark, newsletter


abc-blagues - infopage - les societes - entrepreneurs de france - flashmeat topsitefr - radioduweb
c-rigolo - woopami - rire-et-sourire - pubstv - widouf - planete-nokia - streaming-fr

© 2001-2008 Hotline-PC.org. Tous droits réservés. Ce site fait régulièrement l'objet d'un marquage IDDN.IDDN Certification
Un site du réseau : 

Contact - Plan du site - Notice légale
Blog Bookmark Newsletter