Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

レジストリへのアクセスをモニタする方法

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

デジタルアドバンテージ
2001/03/09
2002/11/30 更新
 
対象OS
Windows 95
Windows 98
Windows 98 SE
Windows Me
Windows NT
Windows 2000 Professional
Windows XP Professional
Windows XP Home Edition
Windows 2000 Server
Windows 2000 Advanced Server
トラブルシュートなどの目的で、システムがどのレジストリ情報を参照しているか、書き込んでいるかを調査する必要に迫られる場面がある。
このような場合には、レジストリへのアクセスを逐一モニタできるフリー・ソフトウェアのRegmonが便利である。
 
解説

 周知のとおり、レジストリはWindowsシステムに関するさまざまな情報を集中的に管理するデータベースである。ハードウェアからOS、アプリケーションに至るまで、Windowsシステムに関する、ほとんどあらゆる情報がこのレジストリに記録される。Windowsシステムの稼働中は、ことあるごとにレジストリへの読み書きが発生し、レジストリ情報が参照されたり、必要な情報が記録されたりする。いってみれば、レジストリはWindowsシステムの挙動を支配する頭脳のようなものだ。

 レジストリに記録された設定情報を操作すれば、Windows OSを自由自在にカスタマイズすることができる。レジストリを編集するために、Windows 2000/XPにはレジストリ・エディタ(regedit.exe)と呼ばれるツールが標準で提供されている(ただし、レジストリに不正な値を書き込むと、最悪の場合、システムが起動不能になるなど、致命的な結果をもたらす危険もあるので注意が必要だ)。問題は、大量の情報で樹海のようになったレジストリから、自分が求めるカスタマイズに対応する項目を見つけ出すことだ。英語版ながら、これには『Windows 2000 Professionalリソースキット』(日経BPソフトプレス発行)などのリソースキットに付属するCD-ROMに収録されているレジストリ・リファレンス・ヘルプを活用できる。このヘルプの詳細については別稿の「Windows TIPS:リソース・キット付属のレジストリ・リファレンスを活用する」が詳しいので参照されたい(ただし、Windows XPのリソースキットでは、このようなヘルプは用意されていない)。

SysinternalsのRegmon

 前出のレジストリ・リファレンスを利用すれば、目的とするたいていのレジストリ項目を見つけ出すことができるだろう。しかしこれでも100%完全というわけではないし、中にはヘルプの記述が間違っていることもある(記述ミスの例:「Microsoft Knowledge Base:After Upgrade to Windows 2000 Last Logged On User Name Displayed」)。また、ソフトウェアの挙動を確認するために、そのソフトウェアの設定情報がどこに保存されるのか(ファイルなのか、レジストリなのか? レジストリだとすればどの項目か?)を調査する必要に迫られることもある。例えば、あるソフトウェアを別の環境に移行したら、以前と挙動が変わってしまったときなどは、レジストリにおける設定情報が影響している可能性がある。

 こんなとき、何とか原因を見つけ出そうとレジストリと格闘したが、そのあまりの奥深さにさじを投げたという経験はないだろうか。あるいは、これからそういう必要に迫られるかもしれない。そんな上級ユーザーには持ってこいのツールがある。それが今回ご紹介するSysinternalsのRegmon(Registry monitor)である。

 Sysinternalsは、主に開発者や管理者向けのツール開発などで著名なマーク・ルシノビッチ(Mark Russinovich)氏とブライス・コスウェル(Bryce Cogswell)氏の2人が公開しているWebサイトで、両氏が開発した数々のフリー・ソフトウェアが公開されている。両氏はかつて、米国の開発者向け雑誌として著名なDr.Dobb's Journal誌の構成エディタを務めていたことがあり、記事中で作成したサンプル・プログラムなどをこのSysinternalsサイトで公開し始めた。その後両氏は、さらに本格的なツール開発と販売を手がけるWinternals Software LP社を設立し、別途サイトを構築した(Winternalsのホームページ)。簡単にいえば、Sysinternalsはフリー・ソフトウェアの提供を目的としており(ものによってソース・プログラムも公開されている)、Winternalsは有償ソフトウェアの販売を目的としている。ただし一部のソフトウェアでは、Winternalsで販売されているソフトウェアの機能制限試用版がSysinternalsで公開されているというケースもある。

Sysinternalsのホームページ
Dr.Dobb's Journalの構成エディタとして活躍していたマーク・ルシノビッチ(Mark Russinovich)氏とブライス・コスウェル(Bryce Cogswell)氏によって設立されたフリー・ソフトウェア提供サイト。無償ながら、非常に強力なツールが多数提供されている。
http://www.sysinternals.com/index.shtml

 SysinternalsやWinternalsという名前が表しているとおり、システム内部に精通し、これをモニタしたり、機能拡張したりするツール開発などが両氏の本領である。実際マーク・ルシノビッチ氏は、『アーキテクチャ徹底解説 Microsoft Windows 2000(上/下)』(日経BPソフトプレス発行)の共同著者の1人でもある。

 このSysinternalsで提供されているツールの1つが今回ご紹介する「Regmon for Windows NT/9x」である。これは、レジストリへのアクセスをリアルタイムに監視するツールで、レジストリからの読み出しや、レジストリへの書き込みを逐一モニタすることが可能である。従ってこのRegmonを実行して、レジストリ・アクセスを調査したい操作を行えば、それによってどのようなレジストリ・アクセスが発生しているか(レジストリにアクセスしていないか)を調べることができる。

操作方法

Regmonのダウンロードと実行

 Regmonを入手するには、SysinternalsのRegmonのページに行き、ページの最後にある“Download Regmon (x86 - 72KB) - you plan on using Regmon on WinNT/2K/XP”からプログラムをダウンロードする(Windows NT 4.0/2000/XPの場合)。Windows 9x(Windows 95/98/Me)で実行したければ、“Download Regmon (x86 - 72KB) - you plan on using Regmon on Win9x/Me”のほうをダウンロードする。

 こうしてダウンロードされるファイルは、いくつかのファイルをまとめたzipファイルなので、これを適当なフォルダ(Regmonをインストールしたいフォルダ)に置き、解凍する。以上でセットアップは完了である。後はこうして解凍されたregmon.exeを実行すればよい。ただしWindows NT/2000でRegmonを実行するには、管理者権限が必要である(管理者権限の詳細は「Windows TIPS:Administratorとは?」を参照)。なおインストーラなどを起動しないため、[スタート]−[プログラム]などにアイコンは追加されないので、必要なら自分でプログラムのショートカットを適当な場所に置いておくとよい。

 Regmonを起動すると次のようなウィンドウが現れる。

Regmon
Regmonを起動したところ。このようにRegmonのウィンドウには、レジストリに対するアクセスが発生するたびに、それらの情報が続々と表示される。どのプロセスが、どのようなキーの値にアクセスしているかがひと目で分かる。
  シーケンシャル番号。レジストリ・アクセスが発生し、その情報行が追加されるたびに、1ずつカウンタがアップする。
  時間情報。この画面はストップウォッチ・モードで、Regmon起動後からの経過時間(秒)が表示されている。この例では、起動後約133秒後に発生したアクセス、151秒後に発生したアクセスの情報が表示されている。
  レジストリをアクセスしたプロセスの名前とプロセスID。この例では、プロセスID=712のWord(WINWORD.EXE)およびプロセスID=460のDiskeeperのサービス(DKService.exe)がレジストリをアクセスしていることが分かる。
  レジストリ・アクセスの種類。ドキュメントなどには明記されていないが、名前から想像するに、OpenKey=キーのオープン、QueryKey=値の読み出し、SetValue=値の書き込み、CloseKey=キーのクローズだと思われる。
  アクセスされたキーのパス。表記には略記(HKCR=HKEY_CLASSES_ROOTなど)が使われている。

 の“Time”では、ストップウォッチ・モードと時計モードの2つを選択できる。このうち上の画面はストップウォッチ・モードで、Regmonの起動直後からの経過時間が秒単位で表示される。一方の時計モードにすると、アクセスが発生した時刻が表示されるようになる。

 このように“Time”()、“Process”()、“Request”()、“Path”()を見れば、それぞれレジストリ・アクセスが発生した時間、レジストリをアクセスしたプロセス、レジストリ・アクセスの種類(読み出しか、書き込みかなど)、アクセスされたレジストリのパスを調査できるというわけだ。

 Regmonはすべてのレジストリ・アクセスを監視するので、システムの状態にもよるが、通常は大量の情報が続々と表示されることになる。情報が多すぎて目的の情報を見つけにくいときには、Regmonのフィルタ機能を利用することができる。これは簡単にいえば、文字列を指定することで、「指定文字列を含む情報のみ表示する」とか、「指定文字列を含む情報は表示しない」などの設定を可能にするものだ。注目外の特定のサービスなどが大量のアクセスを行うようなら、このサービスに関する情報(“Process”項目を利用)を表示しないようにフィルタを設定すればよい。

活用例:Tweak UIの設定をモニタしてみる

 ここでは応用例として、Windows 2000向けのTweak UIを使った設定がレジストリにどのように反映されるかをモニタしてみよう。Tweak UIは、いくつかのレジストリ設定をGUIから実行可能にするツールで、米MicrosoftのWebサイトより無償でダウンロードできる(Windows 2000向けのTweak UIの詳細は「Windows TIPS:Tweak UIを使ってWindows 2000をカスタマイズする」を参照、Windows XP向けは「Windows TIPS:PowerToys for Windows XPを活用する」を参照)。

Tweak UI(Windows 2000対応版)
Tweak UIは、いくつかの代表的なレジストリ設定をGUIから行えるようにしたツールである。今回は例として、音楽CDの自動再生機能をオン/オフする設定である、[Pranoia]タブの[Play audio CDs automatically]のチェック・マークをオン/オフしてレジストリへのアクセス状況をモニタする。
  今回テストする設定項目。これは音楽CDがCD-ROMドライブに挿入されたときに自動再生するか、しないかを設定する項目。このチェック・マークをオンにして、レジストリがどのようにアクセスされるかを検査する。

 まずはRegmonを起動しておき、Tweak UIを起動して、[Paranoia]タブをクリックする。そして[Play audio CDs automatically]のチェック・マークをオンにし、下の[適用]ボタンをクリックする([Play audio CDs automatically]は、最初はオフだとする)。[適用]ボタンをクリックすると、レジストリへのアクセスが発生し、その結果が続々とRegmonのウィンドウに表示される。

Tweak UIで設定を行った場合のRegmonウィンドウ
Regmonでレジストリ・アクセスをモニタしながら、Tweak UIでの設定を実行したところ。このテストでは、Regmonのハイライト機能により、アクセスの種類が“SetValue”(値の書き込み)の行だけ(“SetValue”という文字列を含む行だけ)をハイライト表示している。このウィンドウで適当な項目をダブルクリックすれば、レジストリ・エディタが起動され、対応するレジストリ・パスが表示される。

 このテストでは、Regmonのハイライト機能を利用して、アクセスの種類が“SetValue”(値の書き込み)の行だけ(“SetValue”という文字列を含む行だけ)をハイライト表示させた。これを見ていると、Tweak UIのプロセスはrundll32.exe(DLLをプログラムとして実行するためのもの)で、例えば“HKEY_CLASS_ROOT\AudioCD\shell(Default)”に「"play"」という文字列を書き込むなど(一番上のハイライト行)していることが分かる。

 以下のハイライト行は、“Path”列の横幅が短くてよく分からないが、ウィンドウの横幅を広げることができるし、フォントを小さくすることもできる。またRegmonに表示された適当な行をマウスでダブルクリックすれば、レジストリ・エディタが起動され、対応するパスが表示される。

 ご覧のようにRegmonは非常に強力なツールである。今回はご紹介できなかったが、Regmonには、起動時のレジストリ・アクセスをログ・ファイルに記録させる機能もある(Windows NT/2000/XPのみ)。Regmonの結果を丹念に見ていけば、Windowsシステムがどのように動いているのか、アプリケーションがどのように動いているのかを知ることができる。これらの情報は、システムやアプリケーションをさらに活用するために、あるいはトラブルシューティングに役立つだろう。Windowsの上級ユーザーなら持っていて損のないツールである。End of Article

関連記事(Windows Server Insider)
  Windows TIPS:リソース キット付属のレジストリ リファレンスを活用する
  BookReview:Inside Microsoft Windows 2000 Third Edition
  Windows TIPS:Administratorとは?
  Windows TIPS:Tweak UIを使ってWindows 2000をカスタマイズする
     
関連リンク
  Windows 2000 Professionalリソースキット(日経BP ソフトプレス)
  Microsoft Knowledge Base:After Upgrade to Windows 2000 Last Logged On User Name Displayed(Microsoft)
  <Winternalsのページ(Winternals)
  Regmonのページ(Sysinternals)
     
更新履歴
【2002/11/30】Windows XPを踏まえて情報を一部修正しました。
 
「Windows TIPS」


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間