こんにちは、阿久津です。長年Windowsを使い続けると問題になるのがレジストリの肥大化です。WindowsはOS自身はもちろん、ハードウェアからソフトウェアに至るまで、さまざまな情報をレジストリに蓄積し、その情報を元に各機能を実現してきました。そのため、使用期間やインストールしたアプリケーションの数に応じて肥大化する傾向があります。

なかでも顕著なのがソフトウェアに関する共通情報を格納するHKEY_LOCAL_MACHINE\SOFTWAREキー。直下にはベンダー名を名前に持つサブキーが並び、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsキーやHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NTキーは、Windowsに関する情報も含んでいます(図01)。

図01 HKEY_LOCAL_MACHINE\SOFTWAREキーをレジストリエディターで開いた状態。インストールしたアプリケーションのベンダー名がサブキーとして並びます

このような理由から、HKEY_LOCAL_MACHINE\SOFTWAREキーはHKEY_CURRENT_USER\Softwareよりも肥大化する傾向にありますが、Windows 9x時代と異なり肥大化しても極端なパフォーマンスダウンにつながる訳ではありません。しかし、不要な情報は削除するなど整理整頓はWindows 8.1も同じです。ちょうど今週はゴールデンウィークですので、ツールを使って肥大化したレジストリサイズを圧縮するチューニングをご紹介しましょう。

今回使用するツールは、Windows SysinternalsのRegistry UsagePendMoves & MoveFile。SysinternalsはBryce Cogswell氏とMark Russinovich氏が創設した企業ですが、2006年7月にMicrosoftが買収。Russinovich氏はMicrosoftに入社し、現在はテクニカルフェローを務めています。

Windows Sysinternalsは自動起動するソフトウェアの除去など、多くの便利なツールを取りそろえていますので、これを機会に"全部入り"となる「Sysinternals Suite」のインストールをお勧めします(図02~03)。

図02 「Sysinternal Suite」をダウンロードします。Internet Explorerの場合は続けて通知バーの<ファイルを開く>ボタンをクリックしてください

図03 ダウンロードした「SysinternalSuite.zip」を解凍し、任意のフォルダー(今回は「C:\Tools\Sysinternal」)に展開してください

続いて今回使用するツールはすべてコマンドラインから実行しますので、あらかじめ環境変数PATHの設定を変更しましょう。ユーザー環境変数としてPATHを新規作成し、Sysinternals Suiteを展開したフォルダーを追加するだけです(図04~06)。

図04 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「rundll32.exe sysdm.cpl,EditEnvironmentVariables」と入力して<OK>ボタンをクリックします

図05 ダイアログが起動したら、<新規>ボタンをクリックします

図06 変数名のテキストボックスに「PATH」、変数値のテキストボックスに「C:\Tools\Sysinternal」などSysinternal Suiteを展開したフォルダーを入力し、<OK>→<OK>と順にボタンをクリックします

これで準備ができました。早速レジストリサイズを確認してみましょう。コマンドプロンプトから「ru HKLM\SOFTWARE」と実行してください(HLKM=HKEY_LOCAL_MACHINE)。下図の実行結果は、HKEY_LOCAL_MACHINE\SOFTWAREキー下の値が859,461個、サブキーは427,217個、サイズは120,996,116バイト(0.11GB)と示されています(図07~09)。

図07 [Win]+[X]キーを押してクイックアクセスメニューを開き、[A]キーを押します。もしくは<コマンドプロンプト(管理者)>をクリックしてください

図08 プロンプトに「ru HKLM\SOFTWARE」と入力して[Enter]キーを押してください。しばらくすると現在のレジストリサイズが示されます

図09 初回起動時はSysinternalのライセンス条項に対する確認を求められます。内容を確認した上で<Agree>ボタンをクリックしてください

それではこの環境でレジストリサイズを圧縮してみましょう。

1. 管理者権限でレジストリエディターを起動します。
2. HKEY\_LOCAL\_MACHINE\SOFTWAREキーをレジストリハイブ形式でエクスポートします。
3. movefileコマンドでC:\Windows\System32\config\SOFTWAREをリネームします。
4. movefileコマンドでエクスポートしたレジストリハイブファイルをC:\Windows\System32\config\SOFTWAREに移動します。 5. PCを再起動します。

これでチューニングが完了しました(図10~18)。

図10 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図11 レジストリエディターが起動したら、HKEY_LOCAL_MACHINEキーを開きます。そのままSOFTWAREキーを右クリックし、<エクスポート>をクリックしてください

図12 保存先を指定し(ここでは「C:\」)、任意のファイル名を付けますます(ここでは「NEW」)。「ファイルの種類」を「レジストリハイブファイル」に変更して、保存してください

図13 先の手順を参考にコマンドプロンプトを管理者権限で起動し、「dir C:\NEW C:\Windows\System32\config\SOFTWARE」と入力して[Enter]キーを押してください。これで、エクスポートしたレジストリハイブファイルのサイズを、約10MB削減できたことがわかります

図14 続けてプロンプトに「cd \Windows\System32\config」と入力して[Enter]キーを押します

図15 次に「movefile.exe SOFTWARE SOFTWARE-old」と入力して[Enter]キーを押します

図16 そして「movefile.exe C:\NEW SOFTWARE」と入力して[Enter]キーを押します

図17 最後に「pendmoves」と入力して[Enter]キーを押します

図18 PCを再起動するため「shutdown -r -t 0」と入力して[Enter]キーを押してください。再起動は即時実行されます

早速結果を確認してみましょう。再び管理者権限でコマンドプロンプトを起動し、「ru HKLM\SOFTWARE」を実行してください。結果はPC環境によって異なりますが、今回のPC環境ではレジストリハイブファイルのサイズにおいて10MBほど圧縮されました(図19)。

図19 再び「ru」コマンドを実行してみましたが、数値的はあまり変化しませんでした

今回はレジストリの実体であるレジストリハイブファイルを操作するため、細心の注意を払って作業することと、事前のバックアップを強くお勧めします。今回はWindows 8.1を使用していますが、「PendMoves & MoveFile」はWindows XP以降、「Registry Usage」は動作環境が明らかではありませんが、レジストリ仮想化に対応しているので、Windows 7やWindows Vistaでも本チューニングを試せると思われます(図20)。

図20 Windows 7上で「ru」コマンドを実行した状態。Windows NT系のレジストリ構造は大きく変化していないため、問題なく動作します

それでは、また次号でお目にかかりましょう。

阿久津良和(Cactus)