レジストリの最適化

パソコンのビギナーがレジストリを手動設定することは非常に危険なことです。しかし、マニュアル設定でなければ変更できないキー項目があることも事実です。自信のある方は慎重に行ってみてください。(このページは予告なく変更されます。)問い合わせはこちらまで

レジストリには、Windowsの起動や運用に関する重要なデータが保存されており、誤った変更を行えばWindowsが起動しなくなったり、不安定になる場合がある。十分注意してください。下記の操作によりトラブルが生じても当サイトは一切の責任を負いません。

●レジストリとは

○レジストリの役割

レジストリは、Windowsの最も重要な機能であり、Windowsが使用する情報の格納庫である。Windows 3.1では「Win.ini」「System.ini」というINIファイルにWindowsのデスクトップやフォントなどのさまざまな設定や起動時にロードする仮想ドライバなどの情報が書き込まれていた。これらは、互換プログラムの実行を可能にするために、Windows Me でもいまだシステムフォルダの中に存在している。(「Sysedit」で編集できるプレーンなテキストファイルである。)しかし、Windows 95 以降は、プラグアンドプレイやActiveXなどに関する新しい情報が急増し、これらの情報も含めて、高速に読み書きできるデータベース型のファイルに保存されることになった。これがレジストリ(User.dat と System.dat)である。レジストリの誕生によって、アプリケーションを実行したりデバイスドライバを決定したりユーザープロファイルを設定するなど、Windowsが使用する情報の一元管理は実現したが、反面、専用のツール(Regedit)でないと編集できない、階層構造のため一覧できずわかりにくい、肥大化し壊れやすい、などの評価も受けることになった。

起動時のWindowsの処理概要は次のとおりである。(最初にレジストリが読み込まれるため、問題があれば起動時に発覚する場合が多い。)

1.まず、レジストリを読み込み、システムの基本情報が認識される。
2.「System.ini」が読み込まれ、旧Windowsのシステム設定データが提供される。
3.「Kernel32.dll」がWindowsの主要機能(プログラム)を読み込む。
4.「Gdi.exe」「Gdi.dll」がWindows GUIを読み込む。
5.「User.exe」「User32.exe」がユーザーインタフェースのコードを提供する。
6.システムのリソースとフォントが設定される。
7.「Win.ini」が読み込まれ、旧Windowsの互換プログラムとユーザー設定の情報が提供される。

○レジストリの構造

レジストリは、Windowsフォルダの中にある次の2つのファイルである。

1.User.dat
ユーザー名、ログインID、デスクトップ設定などのユーザー情報が保存される。複数ユーザー設定の場合、それぞれのユーザーごとにプロファイルを作成して管理する。

2.System.dat
ハードウェア構成やプラグアンドプレイに関するプロファイル情報やインストールされているアプリケーションに関する情報が保存される。

以下のような6つのルートキーをトップにした階層構造を持つ。 レジストリエディタでは、HKEY_DYN_DATAを除くキーを編集できる。

レジストリのルートキー
ルートキー
保存される情報
省略形
HKEY_CLASSES_ROOT OLE/OCXの情報、拡張子とOLE/OCX/アプリケーションの関連付け、ドラッグ&ドロップ操作、ショートカットなどの情報。 HKCR
HKEY_CURRENT_USER 現在ログオンしているユーザーの固有の設定情報。HKEY_USERSの現在ログオンしているユーザーのサブキーの別名。 HKCU
HKEY_LOCAL_MACHINE ハードウェア機器やプログラムの実行必要なハードウェア設定とソフトウェア設定。Windowsの設定も含む。 HKLM
HKEY_USERS 複数ユーザー設定の場合の背景色、壁紙、デスクトップレイアウト、スクリーンセーバーなどの、ユーザーごとの設定。 HKU
HKEY_CURRENT_CONFIG 現在のハードウェアプロファイルに関する情報。ハードウェアプロファイルを設定していない場合は、Windowsの標準設定を提供。 HKCC
HKEY_DYN_DATA 稼動中に変化するデータへのポインタで、PnPハードウェアプロファイル、パフォーマンス統計、仮想デバイスドライバ(VxD)に関するデータなどをの記録。 HKDD

○キーの構成要素

レジストリの「キー」はファイルシステムの「フォルダ」に相当する。同様に、ファイルに相当するのが「値」えある。「値」は「名前」と「データ」という要素から構成され、ファイルシステムの「ファイル名」とデータそのものに相当する。「値」に使用できるのは「文字列」(テキストデータ)、「バイナリ」(桁数を指定しない数値データ)、「DWORD値」(32ビットの数値)の3種類であり、その値が最初に作成された際にデータの種類が決定される。
レジストリを編集するということは、次のような操作を行うことである。

1.値のデータの変更
2.キーや値の削除
3.キーや値の新規作成
4.キーや値の名前の変更

○レジストリとシステムパフォーマンス

レジストリとシステムパフォーマンスは次のような相関関係にある。

1.レジストリが肥大化するとパフォーマンスは低下する

Windowsを使い続けるにつれて、レジストリは大きくなり続ける。例えば、プラグアンドプレイデバイスを追加するとコンフィグレーションマネージャが検出し、HKEY_LOCAL_MACHINE\Enum\パス名\の下に記録する。そのデバイスを外したり使用するのを止めても情報は残る。これは、情報を残しておけばそのデバイスを再度取り付けた際に即座にドライバのインストールを行うことができるためである。
また、アプリケーションをインストールするとHKEY_LOCAL_MACHINE\Software\ベンダー名\製品名\の下にその情報が、HKEY_LOCAL_MACHINE\Software\CLASSES\の下にアプリケーションとファイルの関連付けに関する情報が書き込まれる。そして、アプリケーションをアンインストールしても多くの場合これらの情報は、レジストリ内に残される。アンインストール時にすべてクリーンアップして終了するアプリケーションは少ない。これは、再インストールする際に以前の登録情報を参照するために意図的に残す場合もあるためであり、アプリケーションのアンインストーラの仕様によって異なる。
このような理由で、レジストリの情報は増え続け、当然特定の情報を検索して取り出すのに時間がかかるようになる。Windowsの起動時には膨大な情報を一つ一つ検索して取り出すため特にこの影響が大きい。また、Windowsのアプリケーションはレジストリから自分の情報を読み込まなければならないのでレジストリが肥大化すれば当然動きが鈍くなる。

2.レジストリのチューニングによりパフォーマンスは向上する

いくつかのレジストリの項目の設定値を変更することにより、パフォーマンスのチューニングが可能である。ただし、レジストリエディタで変更できる項目は意外に少ない。


●レジストリの異常を調べる

○レジストリのスキャン

Windows Me/98 では、レジストリチェッカー(Windows版は「Scanregw」)が標準装備され、レジストリのバックアップ、復元、再構築を行うことができる。また、不具合の発生に対応できるようにもなっている。

○バックアップと修復

1.バックアップ

Windowsの初期設定では、起動時に最新のレジストリを、Windowsフォルダ下のSYSBCKUPフォルダに「rb00x.cab」(x:番号)という圧縮キャビネットにバックアップする。どのフォルダに保存するか、何世代まで保存するか、他にどのファイルを保存するかなどを、「Scanreg.ini」ファイルの中で指定できる。Windowsの設定を書き換えたり、詳細が不明なアプリケーションをインストールする前には、次のように手動で実行し直前のレジストリファイルをバックアップしておくと安全である。

スタートメニューの「ファイル名を指定して実行」に「Scanregw」を入力して「OK」し、ダイアログボックスの指示に答える。

2.修復(リストア)

レジストリは特殊なデータベース形式であり壊れる場合が多い。起動時にScanregwが実行されエラーが発見されると、Windowsは自動的に日付の新しいファイルを復元し再起動する。手動で特定の日付まで戻したい場合は次のように処理する。

Windows起動後に修復する場合:
「ファイル名を指定して実行」に「Scanregw /restore」を入力して「OK」し、ダイアログボックスから希望する日付のファイルを選択し、再起動する。

起動時に修復する場合:
起動時にコマンドプロンプトに切り替え、「Scanreg /restore」を実行し、希望する日付のファイルを選択し、再起動する。

●レジストリエディタで不要なキーを削除する

○不要なキー項目を削除する

Scanregwでは、レジストリの修復は可能だが、スリム化は無理である。肥大化するレジストリを小さくするためには、まず、市販のツールまたはレジストリエディタで不要なデータを削除しなければならない。間違えてアクティブなキーを削除するとWindowsが起動しなくなる恐れがあるので慎重におこなう。ここでは削除しても安全なキーのみ紹介する。

○アンインストールしたアプリケーションのキー

HKEY_LOCAL_MACHINE\Software\ベンダー名\製品名の下にアンインストールしたにもかかわらず残っているキーを削除する。キーを選択して右クリックし「削除」をクリックすればよい。

また、不正なアンインストール処理を行い、「アプリケーションの追加と削除」の「インストールと削除」リストに残ってしまった場合は、 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstallの下の該当するキーを選択し、同様に右クリックで「削除」すればよい。

○使用しないハードウェアのキー

内蔵のデバイスや外部の周辺機器を追加したり変更することが多いと、レジストリはかなり肥大化しているはずである。だが、ハードウェアの種類によりいくつかのキーに分散されて書き込まれているため、レジストリエディタで完全に削除することは難しく、危険である。(HKEY_LOCAL_MACHINE\Enum以外にも保存される。)ところが、セーフモードで起動し、「システム」の「デバイスマネージャ」タブを見るとレジストリに保存されているすべてのハードウェアが表示される。この中から不要なハードウェアを選択し削除すると、レジストリからも消去される。これが最も安全なクリーンアップの方法である。

○使用しないWindowsの設定に関するキー

一般的な使い方の範囲では、Windowsが使用しないキーはいくつか存在する。ダイエット可能な代表的なキーは次のようなものである。

1.タイムゾーンキーの削除

国外にパソコンを持ち出さず、日本時間だけを使用するなら、タイムゾーンのキーを削除できる。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Time Zones\Tokyo以外のキー(アフガニスタンからヤクーツクまで60ほど)を削除することが可能である。

2.国名/地域キーの削除

パソコンから外国へ電話をかけることがなければ、テレフォニーの国名キーを削除できる。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Telephony\Country List\81(日本)以外のキー(200ほど)を削除することが可能である。
 
●レジストリエディタで設定値を変更する例

レジストリの設定値を変更する目的は、デスクトップなどの表示を自分の好みに合わせる、高速化を図る、特定の問題を解決することである。常にバックアップを取り、安易な変更は絶対にしないでください。

○デフラグの設定変更(アプリケーションの起動の高速化)

「Defrag」は、HDDの断片化を解消し、よく使うファイルの最適な再配置を行う機能である。HDDそのものアクセス速度を速くする訳ではないが、結果としてアプリケーションの起動が速くなる。レジストリエディタを使って次のように設定すれば、「Defrag」に関してより詳細な設定を行うことができる。

1.デフラグ設定の確認

「Defrag」を起動し、「ドライブの選択」ダイアログで「設定」をクリックする。「ディスクデフラグ設定」ダイアログで「最適化方法」の「プログラムファイルを整理して....」と「上記オプションの有効期限」の「デフラグを実行するたびに」の2箇所にチェックを入れて「OK」をクリックする。(デフラグを終了する。)
次に、Windowsフォルダ内の「Applog」フォルダを開き、「Optlog.txt」を開く。ここで、「Programs Ineligible for Optimization:」という行の直前の行頭の数字(N)を記録する。さらにファイルの終わり近くにデフラグの現在の設定「Control Parameters:」が次のように表示されるので確認する。これらの設定はレジストリエディタで編集できる。

Control Parameters:
Use app profile = Yes
Minimum log size = 1000 (Applogフォルダ内のログファイルが最低1000バイトあるアプリから最適化する)
Maximum no use days = 90 (90日使用されていないアプリは最適化の対象から外す)
Maximum apps = 50 (最適化するアプリケーションの数)

(メモ帳を終了する。)

2.レジストリの編集

次に、レジストリエディタを起動し、「Maximum apps」の値を変更する。
まず、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Applets\Defrag\AppStartParamsを開く。最適化するアプリの数を指定するために、右ウインドウで右クリック>「新規」>「DWORD値」を選択し、「新規値」を「MaxApps」に変更。「MaxApps」をダブルクリックして「基数」の10進にチェックし、「値のデータ」に上記(N)の数字よりやや大きい数字(例えばN+20)を入力し「OK」。(レジストリエディタを終了して再起動後「Defrag」を実行し設定を反映させる。)
他の「Control Parameters:」も必要なら同様の手順で編集する。(値は次のとおりである。)

UserProfile
MinLogSize
MaxNoUseDays

広範に最適化するか、よく使うアプリケーションを絞り込んで最適化するかは、簡単には判断できない。「MaxApps」にしても、使用するアプリケーションの集中度が極端に高ければ、「値のデータ」を逆に初期設定値(50)より少なくする方が効果的である。これらの設定はデフラグの処理時間にも影響を与える。逆効果にならないよう慎重に調整すべきである。

○ウインドウ開閉を高速化

1.HKEY_CURRENT_USER\Control Panel\desktop\windowmetrics を開く。
2.「編集」>「新規」>「文字列」をクリックし、「名前」を「MinAnimate」に変える。
3.「MinAnimate」を開き「値のデータ」を「0」にして「OK」。
4.再起動する。

○スタートメニューを高速化

1.HKEY_CURRENT_USER\Control Panel\desktop を開く。
2.「編集」>「新規」>「文字列」をクリックし、「名前」を「MenuShowDelay」に変える。
3.「MenuShowDelay」を開き「値のデータ」を「0」にして「OK」。
4.再起動する。

○ハードディスクのパフォーマンスアップ

1. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\FS Templates を開く
2.「編集」>「新規」>「キー」をクリック、名前を「Max Cache」に変える。
3.「Max Cache」を開き、右ウインドウで(既定)をクリックし、「値のデータ」を「最大キャッシュ」にする。
4.右ウインドウで右クリックし「新規」>「バイナリ」をクリックし、「新規値」を2つ作成する。
5.「新規値#1」の「名前」を「NameCache」に変え、「値のデータ」を「a0 0f 00 00」にする。
6.「新規値#2」の「名前」を「PathCathe」に変え、「値のデータ」を「80 00 00 00」にする。
7.再起動する。
8.「マイコンピュータ」を右クリックし「プロパティ」をクリック。
9.「パフォーマンス」タブの「ファイルシステム」をクリック。
10.「ハードディスク」タブの「コンピュータの主な使用目的」を「最大キャッシュ」に変えて「OK」。
11.再起動する。

○インターネット接続の高速化

1.HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTransを開く。
2.サブキー(フォルダ)を順番にクリックし、に「名前」=「DriverDesc」、「データ」=「TCP/IP」と表示されるキーを探す。
3.右ウインドウで右クリックし、「新規」>「文字列」を選択。
4.作成された「新規値」の名前を「MaxMTU」に変更してダブルクリック。
5.「値のデータ」欄に、モデム経由(アナログ回線)の場合は「576」、TAなどからISDN経由の場合は「1152」と入力し「OK」。
6.他にも該当するキーがあれば2-5を繰返す。
7.次に左ウインドウで、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP を開く。
8.右ウインドウで右クリックし、「新規」>「文字列」を選択。
9.作成された「新規値」の名前を「DefaultRcvWindow」に変更してダブルクリック。
10.「値のデータ」に「2144」と入力して「OK」。
11.続いてもう一度右クリックし、「新規」>「文字列」を選択。
12.作成された「新規値」の名前を「DefaultTTL」に変更してダブルクリック。
13.「値のデータ」に「64」と入力し「OK」。
14.レジストリエディタを終了し再起動する。

○ショートカットの作成の設定変更

ショートカット作成時に、「〜のショートカット」というテキストを作成しない(元ファイルと同じ名前にしたい)場合は、次のようにレジストリを編集することで変更可能である。ただし、ショートカットを作成した直後に、この処理を行なってはならない。

1.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion の「Explore(r)」をクリック。
2.「編集」>「新規」>「バイナリ」をクリックし、「link」という名前のバイナリ値を作成する。
3.作成した「link」 をダブルクリックし、「00 00 00 00」 に設定する。
4.レジストリエディタを終了し再起動する。

○ファイルを開くアプリケーションの設定

たとえば、拡張子「.data」のファイルをクリックするとメモ帳で表示する、という設定をレジストリの編集で行なうと次のようになる。(ファイルを表示する際に必要な時間の何割かは、このレジストリのキーを検索している時間である。)

1.HKEY_CLASS_ROOT\を開き、左ウインドウで「編集」「新規」「キー」を順にクリックし新規キーを作成。
2.「新規キー#1」を右クリックし、名前を「.data」に変更しクリックして開く。
3.右ウインドウの(既定)をクリックして「値のデータ」を「data_file」に変え「OK」。(拡張子の登録完了。)
4.1と同様に、HKEY_CLASS_ROOT\の左ウインドウで「編集」「新規」「キー」を順にクリックしてキーを作成。
5.このキーの名前を「data_file」に変える。
6.同様にして、「data_file」の下に新規キーをつくり、名前を「shell」に変える。
7.同様にして、「shell」の下に「open」を作成し、「open」の下に「command」を作成し、「command」を開く。
8.右ウインドウの(既定)をクリックし、値のデータに「c:\windows\NOTEPAD.EXE "%1"」 を入力して「OK」。
(これで拡張子とファイルを開くアプリケーションの関連づけが完了。)

○「ファイルを開くアプリケーションの選択」のオプション設定

特定のアプリケーションに関連付けされていないファイル(Windowsの旗をイメージしたフラッグアイコンが表示されているファイル)をダブルクリックすると、「ファイルを開くアプリケーションの選択」ダイアログが開く。ここで、「この種類のファイルを開くときは、いつもこのアプリケーションを使う」のチェックを付けたまま「OK」をクリックすると、その拡張子のファイルが、選択したアプリケーションに関連付けされてしまう。Windows Me ではこのチェックがあらかじめ外れているが、Windows95/98では初期設定でチェックが入った状態になっているため、うっかり「OK」をクリックして関連付けしてしまうことがある。このような失敗を繰り返さないために、「この種類のファイルを開くときは...」のチェックがオフの状態になるように設定することができる。

1.HKEY_CLASSESS_ROOT\Unknown\shell\openas\commandを開く。
2.右ウインドウの「(標準)」をクリックして「編集」の「変更」を選ぶ。
3.「文字列の編集」ダイアログの「値のデータ」で、最後にある「%1」の後に半角スペースを追加して「%2」の2文字を追加して「OK」をクリックする。
4.レジストリエディタを終了し再起動する。