レジストリ (registry) は、Microsoft Windows オペレーティングシステム(OS)で用いられている設定情報のデータベースである[1]。OSに関する基本情報やアプリケーションの設定、拡張情報などのほか、拡張子の関連付け、ユーザパスワードなども保存されている。Windows 95およびWindows NT以降で主流となった。これらのデータはシステムドライブ内に記録されている。
すべてのアプリケーションがレジストリを使用しているわけではなく、独自の設定ファイルを用いているものもある。
Windows 3.1までは、オペレーティングシステムの各種設定情報をINIファイル等の設定ファイルに保持させる方法で行われてきた。しかし、この方法では大量の設定項目を処理するには非効率的であり無駄が多いため、レジストリに置き換えられた。
現在のようにレジストリが広く用いられるようになったのはWindows 95からであるが、レジストリ自体はそれ以前、Windows 3.1のころから存在した。ただし関連付けやOLE情報など小規模な利用にとどまっていた。
レジストリ情報の設定・更新・削除は、通常はOSやアプリケーションソフトウェアによって自動的に行われるが、レジストリエディタの使用により、手動での編集も可能である。
手動によるレジストリの編集は主に以下の場合を目的として行われる。
システム設定情報を直接修正するため、レジストリエディタによる編集はオペレーティングシステムの動作に異常をきたす、システムが起動しなくなるなど高いリスクを伴う。
Windowsには、レジストリを編集するアプリケーション、レジストリエディタが付属する。その実行ファイル名は、3.x, 9xの場合、regedit.exeである。Windows NT系の場合、regedit.exeとregedt32.exeの2つが存在する[2]。NT系のregedit.exeは、3.x (NT 3.51の場合)または9x (NT 4.0/2000の場合)のレジストリエディタ互換のプログラムで、一部のレジストリの機能の使用に制限がある[2]。Windows XPからは、regedit.exeにregedt32.exeの機能が統合され、regedt32.exeは単にregedit.exeを呼び出すだけのプログラムとなった[2]。
レジストリエディタを起動すると、左側に項目がツリー構造に並ぶのが確認できる。これをレジストリ・ハイブと呼ぶ。レジストリは階層型データベースになっている。右側に各ハイブに置かれたレジストリ・キーが表示される。レジストリの操作は、このキーを編集してデータ(設定値)を書き換えることである。データはソフトウェアが機能を起動するときに読み込まれるものが多いため、編集直後はシステムに異常をきたすことはほとんどない。しかし、システムを再起動すると編集したデータが読み込まれ、この値によってはシステムが異常な動作を起こし、全く起動できないということも起こりうる。このため多くのレジストリの解説書やWebサイトにも、そのような危険があることを喚起する注意書きが添えられている。
OSやレジストリエディタがレジストリを変更する際は、レジストリAPIを使用する[3]。
レジストリはファイルとしてハードディスクに保存されるため、OSが起動していない場合や、Windows以外からのアクセスの場合は、オフセットからレジストリを読み取ることができる。このオフセットの値や説明は公式では発表されていない(2021/08/22現在)。だがサードパーティからの文書はいくつか存在する[4]。 ただしレジストリを弄るどのオプションより危険で注意しなければならない。また、Windowsが起動している間は、そのアクティブパーティションのレジストリファイルは排他的にロックされているのでアクセスすることすらできない。
何らかの原因によりレジストリに不正な設定が書き込まれたり、レジストリデータベースが破壊された際、システムが自動的にバックアップしたデータベースから復旧できる場合がある。Windows XPの場合、レジストリデータベースの本体は、\windows\system32\config\ の配下にある。システムは、\windows\repair\ 配下にWindowsのインストール完了時点の設定データベースをバックアップしているため、回復コンソールなどを使用して、ファイルをコピーすることでレジストリの設定値を戻すことができる[5]。