Windows TIPS
[Scripting]
  Windows TIPS TOPへ
Windows TIPS全リストへ

WSHでレジストリの読み書きを行う

―― Internet Explorerのホーム・ページ設定を変更する ――

解説をスキップして操作方法を読む

山田 祥寛
2004/07/24
 
対象OS
Windows NT
Windows 2000
Windows XP
Windows Server 2003
レジストリに直接アクセスすることで、通常のユーザー・インターフェイスからでは参照/設定できないような情報も取得/操作することができる。
レジストリをユーザーが直接に操作するのは何かと危険が伴うが、WSHを介することで安全なレジストリ設定が可能になる。
 
解説

 レジストリは、Windowsや各種アプリケーションの構成・設定情報を格納するためのWindows固有のデータベースだ。通常のユーザー・インターフェイスからでは参照/設定できないような情報も、レジストリにアクセスすることで取得/操作できることが少なくない。

 このように何かとかゆいところに手の届くレジストリであるが、もともとがシステムの基本構成や動作設定を左右する情報を含んでいるため、不用意に不正な値を書き込んでしまうと、システムそのものに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされるようなケースもあり得る。システム管理者もレジストリの操作は必要最小限にとどめるべきであるが、ましてや、一般ユーザーにレジストリ操作を行わせるのはよほどの例外がない限りは避けるべきだ。

 そこで本稿では、WSH(Windows Scripting Hosts)からレジストリ操作を行うための方法を紹介する。一般ユーザーにレジストリを直接操作させるのではなく、管理者が事前に十分テストして作成したWSHを利用することで、不用意な操作によってシステムが不安定になったり、復旧不可能な状態に陥ったりする状況を避けることができる。


操作方法
 
[注意]

レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。

手順1―テキスト・エディタでスクリプトのコードを入力する

 本稿では、レジストリ読み書きの例として、Internet Explorerのホーム・ページ(起動時に表示されるページ)を書き換えてみることにしよう。

 まずはテキスト・エディタ(メモ帳でも何でもよい)を開き、以下のコードを入力してほしい。なお、引用符(')で始まる行はコードの意味を解説するためのコメント部分なので、省略してもよい。

※ファイル:registry.wsf

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="Registry">
<?job error="True" debug="True" ?>
<script language="VBScript">
<![CDATA[
' レジストリの操作は、WshShellオブジェクトを介して行うことができる。
Set WshShell=WScript.CreateObject("WScript.Shell")
' RegReadメソッドで、レジストリ内の指定キーを取得(キーの分類については下記の表参照)。
WScript.Echo("元のホームページ -> " & WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\Start Page"))
' レジストリ内の指定キーを第2引数に指定された値で更新。第3引数には、レジストリに格納する値のデータ型を指定する
WshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page","http://www.wings.msn.to/", "REG_SZ"
WScript.Echo("変更後のホームページ -> " & WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\Start Page"))
]]>
</script>
</job>
</package>
  • サンプル・ファイルのダウンロード
    注:サンプルregistry.wsfを実行するには、上のサンプル・ファイルを右クリックしてregistry.wsfというファイル名で保存する)

 WSHの実行ファイルは拡張子「.wsf」(Windows Scripting host File)とする必要がある。ファイル名自体は何でもよいが、ここでは「registry.wsf」という名前で保存しておこう。このようにレジストリのへのアクセスは非常に簡単である。RegReadでレジストリを読み出し、RegWriteで書き込むことができる。

手順2―WSHのコードを実行する

 registry.wsfを実行するには、エクスプローラなどからregistry.wsfをダブルクリックするだけだ。以下のようなダイアログ・ボックスが順番に表示されれば成功だ。

変更前のホーム・ページ設定
変更後のホーム・ページ設定
registry.wsfの実行結果
スクリプトを実行すると、変更前と変更後のレジストリ値を表示する。

 また、レジストリ・エディタから確かに該当のキー値が指定されたURLに変更されていることを確認しておこう。

registry.wsf実行後のホーム・ページ
ホーム・ページが確かに指定されたURLに更新されている。
  Internet Explorerの起動時に表示されるページ(「ホーム ページ」と呼ばれている)のURL。スクリプト中で指定したものに変更されている。

レジストリ・アクセスで利用されるルート・キーとデータ型

 以上は、レジストリ操作のごく簡単な使用例であるが、より一般的にレジストリを操作するにあたっては、レジストリを構成する5つのルート・キーと設定可能なデータ型の概念を理解しておく必要がある。最後にRegReadとRegWriteメソッドで指定可能なルート・キーとデータ型の一覧を挙げておく。

ルート・キー 省略名 概要
HKEY_CURRENT_USER HKCU 現在ログイン中のユーザーに関する諸設定
HKEY_LOCAL_MACHINE HKLM システム全体、全登録ユーザーに関する設定情報
HKEY_CLASSES_ROOT HKCR 拡張子やアイコン情報など、Windowsで扱うファイル全般に関する情報を管理
HKEY_USERS HKU ユーザー別の設定を管理
HKEY_CURRENT_CONFIG HKCC ハードウェア設定などの設定
レジストリのルート・キー
RegRead、RegWriteメソッドでは、ルート・キーの部分を対応する省略名で指定することもできる

 レジストリの書き込みでは、次のようなデータ型を指定する。End of Article

データ型 概要
REG_SZ 文字列
REG_DWORD 整数
REG_BINARY 2進数(VBArray)
REG_EXPAND_SZ 展開可能な文字列(例:%JAVA_HOME%\bin)
REG_MULTI_SZ 文字列配列(VBArray)
値エントリのデータ型
 
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間