SCIENCE PARK

デバドラ講座

【 デバドラ講座13 : レジストリ 】

1.レジストリ(Registry)

レジストリはWindowsシステムのパラメータを保存する、ツリー構造のデータベースです。システムのパラメータには初期値、初期条件、実行時の設定値が含まれています。Windowsを起動する前に、レジストリの一部はHDDにファイルとして存在しています。Windows起動時にそのファイルに基づいてレジストリが生成され、カーネルモードとユーザーモードの両方で使用できるようになります。レジストリの値はWindowsの動作中、プロセスにより随時自動的に追加、削除、修正されています。Windowsシャットダウン時には、変更された内容がHDDに保存されます。

レジストリの中には、Windowsが起動するために必要な情報も含まれているので手動で内容を変更する際には慎重に行わなければなりません。専門知識のない人は、レジストリを自分で変更するのは避けたほうが良いでしょう。一般に、レジストリを変更する場合は、ユーザーモード、カーネルモードでレジストリ操作用関数を使用します。

レジストリの内容を確かめるには、regedit.exeを起動します。[スタート]→[ファイル名を指定して実行]→"regedit"入力→[OK]の順に操作し、レジストリエディタを起動します(図1)。レジストリエディタでレジストリの値の変更を行うことができます。

図1:レジストリエディタ
図1:レジストリエディタ

レジストリはキー、サブキー、名前、値の型、値によって構成されています。1つのキー(サブキー)にはサブキーのみ、または値のみが存在するときもあれば、何も存在しない時もあります。レジストリには5つのメインキーが存在します(表1)。この5つの中でも、HKEY_LOCAL_MACHINEはドライバ開発に関係があるので、このキーについて詳しく見ていきます。

表1:メインキー
メインキー名 含まれる内容
HKEY_CLASSES_ROOT ファイル拡張のための特別な処理
HKEY_CURRENT_USER 現在ログインユーザーのための構成情報
HKEY_CURRENT_CONFIG マシンのコンフィグレーション状態情報
HKEY_LOCAL_MACHINE 現在のシステムの状態
HKEY_USER ローカルユーザーの情報

HKEY_LOCAL_MACHINEの中でもドライバ開発に関係のある3つのサブキーについて表2に示します。表2の中で、動的、静的という表現があります。動的に生成されたメモリは、電源が入っている時だけ変更したメモリが有効になります。つまりハードウェアの設定を変更した場合、電源を切るまではその設定が保存されますが、一度電源を消すと設定も消去されます。静的にレジストリを生成すると、電源を消しても変更されたレジストリ内容はそのまま保存されます。システムやソフトウェアの設定は、ユーザーが設定を変更すると次回PCが起動した際に、変更された内容がそのまま有効である必要があります。従って、システムとソフトウェアは静的に生成されます。

表2:HKEY_LOCAL_MACHINEのサブキー
サブキー名 説明
HARDWARE デバイスのリソース情報を管理します。ここのキーは全て動的に生成され、システムの起動ごとに再構築されます。ドライバ開発では、この部分は直接作る事はありません。
SOFTWARE 現在インストールされているソフトウェアの構築状況の管理を行います。ここのキーは静的に生成されます。ドライバ開発に関するのは、現在のシステムバージョンの情報です。それ以外の部分はドライバ開発には使用しません。
SYSTEM
  • - CurrentControlSet
    • - Control
    • - Enum
    • - Hardware Profiles
    • - Services

SYSTEMのサブキーの1つにCurrentControlSetがありその下に4つのサブキーが存在します。その中でも、ControlとServicesはドライバ開発に直接関係があります。ここのキーは静的に生成されます。

Control:
システムの起動時、ドライバを含むシステム初期設定のロード順序などを管理します。
Services:
ドライバを含め、システムサービスに関連するパラメータを管理します。

参考資料

「NTドライバプログラミング」
Peter G. Viscarola、W. Anthony Mason著 久保雅俊、三浦秀朗訳 サイエンスパーク株式会社 監修
「WDMデバイスドライバプログラミング完全ガイド」上
Edword N. Dekker, Jpseph M. Newcomer著 株式会社クイック訳
page up