Ask CORE

Microsoft Japan Windows Technology Support

HKLMSOFTWARE のサイズ確認方法と、肥大化した場合の圧縮方法

こんにちは、Windows プラットフォーム サポート 横瀬です。

Windows プラットフォームのシステム管理をする上で、避けて通れないのがレジストリですよね。
今回は、このレジストリの中で、比較的サイズが大きくなりやすい HKLM\SOFTWARE のサイズを
確認する方法と、万が一肥大化している場合に、サイズを圧縮する方法をご紹介いたします。

こちらの技術情報では、圧縮する手順の中で、レジストリの元となるファイル (レジストリ ハイブ) が
オペレーションの対象となっております。圧縮作業を実施する際には、慎重に作業いただきますよう
お願いいたします。万が一、置き換え対象を間違えたりした場合、システムが起動できなくなる場合も
あります。

▼ 事前準備

1. Windows Sysinternals のサイトから Registry Usage と PendMoves/MoveFile を
    ダウンロードします。

   Registry Usage (ru.exe)
   http://technet.microsoft.com/ja-jp/sysinternals/dn194428

   PendMoves と MoveFile
   http://technet.microsoft.com/ja-jp/sysinternals/bb897556

▼ レジストリのサイズ確認する手順

1. 管理者権限をもったユーザーでログオンします。
2. コマンド プロンプトを "管理者として実行" で起動します。
3. ru.exe を使用して、HKLM\SOFTWARE のサイズを確認します。

   > ru.exe HKLM\SOFTWARE
  
   ※ サイズが大きい場合、表示されるまでに時間がかかる場合があります。
        気長にお待ちくださいませ。

      例)
     
      > ru.exe HKLM\SOFTWARE

      Ru v1.0 – report registry key usage
      Copyright (C) 2013 Mark Russinovich
      Sysinternals – www.sysinternals.com

      Values:       259999
      Keys:         174423
      Size:         30,833,788 bytes 

   Size を確認し、1GB (1,073,741,824 byte)  以上のサイズであった場合には、
   圧縮をご検討ください。

▼ 肥大化した HKLM\SOFTWARE のレジストリ ハイブを圧縮する手順

1. 管理者権限をもったユーザーでログオンします。
2. レジストリ エディター (regedit.exe) を起動します。
3. 現在のレジストリ キー (HKLM\SOFTWARE) を基に、サイズを圧縮させた
    レジストリ ハイブを作成します。

   3-1. 以下のキーまで移動し、右クリックし "エクスポート" を
          クリックします。
     
           HKEY_LOCAL_MACHINE\SOFTWARE
          
   3-2. エクスポート画面にて、C ドライブの何れかのフォルダーを
          指定します。
   3-3. エクスポート画面にて、ファイルの種類を "レジストリ ハイブ ファイル" を
          クリックし、任意のファイル名をつけて保存します。
          
        例)
        ファイル名: SOFTWARE-new
        ファイルの種類: レジストリ ハイブ ファイル (*.*)
        選択された部分: HKEY_LOCAL_MACHINE\SOFTWARE

4. 手順 3 で圧縮したレジストリ ハイブと、元々のレジストリ ハイブのサイズを
    比較します。

   ※ 元々のレジストリ ハイブは  C:\Windows\System32\config\SOFTWARE です。
  
▼ 圧縮した HKLM\SOFTWARE のレジストリ ハイブと、元のレジストリ ハイブを置き換える手順

1. 管理者権限をもったユーザーでログオンします。
2. コマンド プロンプトを “管理者として実行” にて起動します。
3. 事前準備でダウンロードした PendMoves と MoveFile の場所に移動し、
    以下のコマンドを実行します。
     
   例) 圧縮したレジストリ ハイブが C:\tmp\SOFTWARE-new だった場合
     
   > movefile.exe C:\Windows\System32\config\SOFTWARE C:\Windows\System32\config\SOFTWARE-old
   > movefile.exe C:\tmp\SOFTWARE-new C:\Windows\System32\config\SOFTWARE
  
  【 補足 】
     
     上記はシステム再起動のタイミングで、肥大化したレジストリ ハイブに
     -old をつけて、リネームしておき、その後、圧縮したレジストリ ハイブに
     置き換えるよう、設定しています。

4. 以下のコマンドを実行し、指定したオペレーションの順番 (リネームの後、置き換えを行う) を
    再度、確認します。
     
   > pendmoves.exe
  
   例) 実行結果の例

       PendMove v1.2
       Copyright (C) 2004-2013 Mark Russinovich
       Sysinternals – wwww.sysinternals.com

       Source: C:\Windows\System32\config\SOFTWARE
       Target: C:\Windows\System32\config\SOFTWARE-old

       Source: C:\tmp\SOFTWARE-new
       Target: C:\Windows\System32\config\SOFTWARE

5. システムを再起動します。
6. 再起動後、冒頭のサイズ確認手順にて、レジストリのサイズを確認します。

    > ru.exe HKLM\SOFTWARE

▼ SQL Server 2012 SP1 を利用している環境についての補足

    SQL Server 2012 SP1 の利用環境で、HKLM\SOFTWARE が肥大化している場合、
    以下のブログで掲載している不具合に合致する可能性があります。

    レジストリ ハイブの肥大化について(KB 2793634)
    http://blogs.msdn.com/b/jpsql/archive/2014/08/29/kb-2793634.aspx

    ブログ内で紹介している Service Pack 2 をご適用の上、上述の圧縮手順をお試しください。

▼ 補足

    レジストリの肥大化について、マイクロソフト サポートにお問い合わせいただく場合には、
    肥大化しているキーの詳細を確認するため、以下のコマンドラインで情報を採取いただけますと、
    調査がスムーズに進む場合があります。

    例) HKLM\SOFTWARE が大きかった場合の情報採取

        > ru.exe -v -c HKLM\SOFTWARE > registory-list.csv 2>&1

   上記 registory-list.csv をサポート担当者に、ご提供ください。