Functional Tester による Windows レジストリーの読み取り

Windows® レジストリーとは、Windows オペレーティング・システムで構成情報を保管するために使用されるデータベースのことです。 テスターは、Functional Tester コマンドを使用してこのデータベースから情報を読み取ることが時折り必要になります。 このトピックでは、これを行うための例が示されています。

Windows で実行するスクリプトには、以下の例を適用できます。

import javax.swing.JOptionPane;

import resources.RegistryExampleHelper;
import com.rational.test.ft.*;
import com.rational.test.ft.object.interfaces.*;
import com.rational.test.ft.object.interfaces.SAP.*;
import com.rational.test.ft.object.interfaces.siebel.*;
import com.rational.test.ft.script.*;
import com.rational.test.ft.value.*;
import com.rational.test.ft.vp.*;

/**
 * Description   : Functional Test Script
 * @author Administrator
 */
public class RegistryExample extends RegistryExampleHelper
{
	/**
	 * Script Name   : RegistryExample
	 * Generated     : Jul 20, 2006 1:48:49 PM
	 * Description   : Functional Test Script
	 * Original Host : WinNT Version 5.1  Build 2600 (S)
	 * 
	 * @since  2006/07/20
	 * @author Administrator
	 */
	public void testMain (Object[] args)
	{
	    try
	    {
	        //Use this code to extract String (REG_SZ) values from the registry.
	    	String regKeyString ="HKEY_LOCAL_MACHINE¥¥SOFTWARE¥¥Rational Software¥¥Rational Test¥¥8¥¥Rational FT Install Directory";
	    	
	        String regValueString = getOperatingSystem().getRegistryValue(regKeyString);
	        JOptionPane.showMessageDialog(null, regValueString,"String Registry Value",1);
	    }
	    catch (NoSuchRegistryKeyException e)
	    {
	        JOptionPane.showMessageDialog(null, "Error finding registry key.");
	        System.out.println ("No Such Registry Key Exception." + e);
	    }
	    try
	    {
	        //Use this code to extract Integer (DWORD) values from the registry.
	        String regKeyInt = "HKEY_CURRENT_USER¥¥Control " +"Panel¥¥Desktop¥¥LowLevelHooksTimeout";
	        Integer regValueInt = new
	           Integer(getOperatingSystem().getRegistryIntValue(regKeyInt));
	        JOptionPane.showMessageDialog(null,regValueInt, "Integer Registry " + "Value ",1);
	    }
	    catch (NoSuchRegistryKeyException e)
	    {
	        JOptionPane.showMessageDialog(null, "Error finding registry key.");
	        System.out.println ("No Such Registry Key Exception. (" + e + ")" );
	    }
	}
	}

Functional Tester ユーザーがレジストリーから値を読み取る場合に、2 つのコマンドを使用できます。 getRegistryValue コマンドは、レジストリーからストリング値を読み取るために使用します。 getRegistryIntValue は、レジストリーから整数値を読み取るために使用します。 "REG_SZ" という語は、ストリングおよび整数タイプを記述します。 どちらのコマンドもタイプ String の引数を取ります。この引数には抽出するレジストリー・キーが含まれます。

注: キーを入力する際に、Java™ では、"¥" は特殊文字なので、リテラルとして使用するには "¥¥" と二重にしなければなりません。

この例では、レジストリーからストリングと整数値の両方を抽出します。最初に String 値セグメントについて見ると、以下の核となるコードに注目できます。

String regKeyString ="HKEY_LOCAL_MACHINE¥¥SOFTWARE¥¥Rational Software¥¥Rational Test¥¥8¥¥Rational FT Install Directory";
String regValueString = getOperatingSystem().getRegistryValue(regKeyString);
JOptionPane.showMessageDialog(null, regValueString,"String Registry Value",1);

最初の行はタイプ String の変数を作成します。この変数には、抽出するレジストリー値が含まれます。 2 番目の行はコマンドを実行し、タイプ String の変数 regValueString にそれを保管します。 3 番目の行は、JOptionPane.showMessageDialog クラスを使用して、画面上のメッセージ・ボックス内にレジストリー値を表示します。 この最後のクラスに知られていないもの (Java Swing クラス) については、インポートして Functional Tester で使用できるようにしなければなりません。 スクリプトの先頭にある最後の import 文に注意してください。

2 番目のセグメントはタイプ int 値を抽出します。 この例では、単純タイプ intInteger オブジェクトに変換され、JOptionPane のダイアログに表示できるようになります。 それ以外は、このコードは最初のセグメントと同一です。

どちらのコマンドも、失敗すると NoSuchRegistryKeyException をスローします。 したがって、例のように、try/catch ブロックにこれらのメソッドを入れることをお勧めします。 レジストリー・キーを存在しない値に変更してスクリプトを実行することができます。キーを検出できなかったことを示すエラー・メッセージが表示されます。


フィードバック