Lecture du registre Windows avec Functional Tester

Le registre Windows est une sorte de base de données utilisée par le système d'exploitation Windows pour stocker toutes les informations de configuration. Il n'est pas rare que le testeur ait besoin de lire les informations de cette base de données en utilisant des commandes de Functional Tester. L'exemple suivant s'applique aux scripts exécutés sous Windows :

import resources.RegistryExampleHelper;
import com.rational.test.ft.*;
import com.rational.test.ft.object.interfaces.*;
import com.rational.test.ft.script.*;
import com.rational.test.ft.value.*;
import com.rational.test.ft.vp.*;
import javax.swing.JOptionPane;


/** * Description : Functional Test Script * @author Administrator */ public class RegistryExample extends RegistryExampleHelper {     /**     * Script Name   : RegistryExample     * Generated     : Dec 14, 2005 3:58:25 PM     * Modified      : Dec 14, 2005 3:58:25 PM     * Description   : Functional Test Script     * Original Host : WinNT Version 5.0 Build 2195 (Service Pack 3)     *     * @since 2005/12/14     * @author Administrator     */     public void testMain (Object[] args)        {           setOption (IOptionName.BRING_UP_LOGVIEWER, false);           try        {           //Utiliser ce code pour lire les valeurs de type chaîne (REG_SZ) dans le registre.           String regKeyString =HKEY_LOCAL_MACHINE\\SOFTWARE\\              Rational Software\\Rational Test\\8\\Data Directory";           String regValueString              getOperatingSystem().getRegistryValue(regKeyString);           JOptionPane.showMessageDialog(null, regValueString,              "Valeur de registre de type String",1);        }           catch (NoSuchRegistryKeyException e)        {           JOptionPane.showMessageDialog(null, "Erreur : clé de registre introuvable.");           System.out.println ("Exception NoSuchRegistryKeyException." + e);        }           try        {           //Utiliser ce code pour lire les valeurs de type entier (DWORD) dans le registre.           String regKeyInt = "HKEY_CURRENT_USER\\Control " +              "Panel\\Desktop\\LowLevelHooksTimeout";           Integer regValueInt = new              Integer(getOperatingSystem().getRegistryIntValue(regKeyInt));           JOptionPane.showMessageDialog(null,regValueInt, "Valeur de registre " +              de type Integer",1);        }           catch (NoSuchRegistryKeyException e)        {           JOptionPane.showMessageDialog(null, "Erreur : clé de registre introuvable.");           System.out.println ("Exception NoSuchRegistryKeyException. (" + e + ")" );        }        } }

Deux commandes sont à la disposition des utilisateurs de Functional Tester pour lire les valeurs du registre. La commande getRegistryValue sert à lire les valeurs de type chaîne. La commande getRegistryIntValue sert à lire les valeurs de type entier (integer). Les termes "REG_SZ" et "DWORD" décrivent respectivement ces deux types de données. Les deux commandes reçoivent un argument de type String qui contient le nom de la clé de registre dont on souhaite lire la valeur.

Remarque : La barre oblique inversée ("\") est un caractère spécial en Java. Lorsque vous entrez le nom des clés de registre, veillez à doubler les barres obliques ("\\") afin qu'elles soient interprétées sous leur forme littérale.

Dans l'exemple qui précède, on lit dans le registre une valeur de type chaîne et une valeur de type entier. Examinons le code plus en détail en commençant par le premier segment, qui lit une valeur de clé de type chaîne (String) :

String regKeyString =
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Rational
Test\\8\\Data Directory";
String regValueString =
getOperatingSystem().getRegistryValue(regKeyString);
JOptionPane.showMessageDialog(null, regValueString, "Valeur
de registre de type String",1);

La première ligne crée une variable de type String, qui contient le nom de la clé de registre dont on souhaite lire la valeur. La seconde ligne exécute la commande et stocke son résultat dans une autre variable de type String appelée regValueString. La troisième ligne utilise la classe JOptionPane.showMessageDialog pour présenter la valeur lue dans une boîte de message affichée à l'écran. Il s'agit d'une classe Java Swing standard qui doit être importée afin que Functional Tester puisse en disposer. C'est ce que fait la dernière instruction import, au début du script.

Le second segment extrait du registre une valeur de type entier (int). Dans l'exemple, le type simple int est converti en objet Integer afin qu'il puisse être affiché dans la boîte de dialogue créée par JOptionPane. Cette différence mise à part, le code est identique à celui du premier segment.

Les deux commandes lancent une exception NoSuchRegistryKeyException en cas d'échec. Pour cette raison, il est bon d'encapsuler ces méthodes dans un bloc try/catch, comme dans l'exemple. Essayez de remplacer le nom de la clé de registre par celui d'une clé qui n'existe pas, puis exécutez le script. Vous obtiendrez un message d'erreur signalant que la clé n'a pas été trouvée.

Conditions d'utilisation | Appréciations en retour
(C) Copyright IBM Corporation 2002, 2004. All Rights Reserved.