Windowsレジストリ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

Windowsレジストリ
レジストリエディタicon.png
Regstry Editor.png
レジストリエディタ、Windows10のレジストリのユーザーインターフェイス
開発者マイクロソフト
初回リリース1992年4月6日; 29年前Windowsの3.1 (1992-04-06)
オペレーティング・システムマイクロソフトウィンドウズ
プラットホームIA-32x86-64、およびARM(および歴史的にはDEC AlphaItaniumMIPS、およびPowerPC
に含まれていますマイクロソフトウィンドウズ
タイプ階層型データベース
Webサイトdocs .microsoft .com / en-us / windows / desktop / SysInfo / Registry Edit this on Wikidata

Windowsレジストリは、ある階層型データベースが格納されていること、低レベルの設定のMicrosoft WindowsオペレーティングシステムおよびOPTは、レジストリを使用することをアプリケーションに。カーネルデバイスドライバサービスセキュリティアカウントマネージャ、およびユーザ・インタフェースは、すべてのレジストリを使用することができます。レジストリは、システムパフォーマンスをプロファイリングするためのカウンタへのアクセスも許可します

つまり、レジストリまたはWindowsレジストリには、Microsoft Windowsオペレーティングシステムのすべてのバージョンにインストールされているプログラムおよびハードウェアの情報、設定、オプション、およびその他の値が含まれています。たとえば、プログラムがインストールされると、プログラムの場所、バージョン、プログラムの起動方法などの設定を含む新しいサブキーがすべてWindowsレジストリに追加されます。

Windows 3.1導入されたとき、Windowsレジストリは主にCOMベースのコンポーネントの構成情報を格納していましたWindows95およびWindowsNTは、個々のプログラムの構成を保持し、さまざまな場所に保存された大量のINIファイルの情報を合理化および一元化するためにその使用を拡張しました[1] [2] WindowsアプリケーションがWindowsレジストリを使用する必要はありません。たとえば、.NET Frameworkアプリケーションは構成にXMLファイルを使用しますが、ポータブルアプリケーションは通常、構成ファイルを実行可能ファイルとともに保持します。

理論的根拠

Windowsレジストリの前は、。INIファイルは、各プログラムの設定をテキストファイルまたはバイナリファイルとして保存します。多くの場合、マルチユーザーシナリオではユーザー固有の設定を提供しない共有の場所にあります。対照的に、Windowsレジストリは、すべてのアプリケーション設定を1つの論理リポジトリ(ただし、多数の個別のファイル)に標準化された形式で格納します。Microsoftよると、これには.INIファイルに比べていくつかの利点があります。[2] [3]ファイルの解析はバイナリ形式ではるかに効率的に行われるため、テキストINIファイルよりも高速に読み取りまたは書き込みが可能です。さらに、強く型付けされたデータ.INIファイルに保存されているテキスト情報とは対照的に、レジストリに保存できます。これはregedit.exe、組み込みのWindowsレジストリエディタを使用して手動でキーを編集する場合の利点です。ユーザーベースのレジストリ設定は、読み取り専用のシステムの場所からではなく、ユーザー固有のパスから読み込まれるため、レジストリを使用すると、複数のユーザーが同じマシンを共有でき、特権の少ないユーザーでもプログラムを実行できます。レジストリは、リモート管理/サポートのためのネットワーク接続を介してアクセスすることができるようバックアップと復元は、一連の標準使用して、スクリプトから含めて、簡略化されているAPIを限り、リモートレジストリとして、サービスが実行されていて、ファイアウォールのルールはこれを許可します。

レジストリはデータベースであるため、アトミックアップデートなどの機能によりシステム整合性が向上します。 2つのプロセスが同じレジストリ値を同時に更新しようとすると、一方のプロセスの変更が他方のプロセスの変更に先行し、データの全体的な一貫性が維持されます。 .INIファイルに変更が加えられた場合、そのような競合状態により、データの一貫性が失われ、更新の試行と一致しなくなる可能性があります。 Windows Vista以降のオペレーティングシステムは、カーネルトランザクションマネージャーを使用してレジストリにトランザクション更新を提供し、従来のコミットアボートセマンティクスを使用して、複数のキーや値の変更にわたってアトミック性の保証を拡張します。 (ただし、NTFSは ファイルシステムにもこのようなサポートを提供するため、理論的には、従来の構成ファイルでも同じ保証を得ることができます。)

構造

キーと値

レジストリには、キー値の2つの基本要素が含まれていますレジストリキーは、フォルダに似たコンテナオブジェクトです。レジストリは、ファイルと同様の非コンテナオブジェクトです。キーには、値とサブキーを含めることができます。キーは、Windowsのパス名と同様の構文で参照され、バックスラッシュを使用して階層のレベルを示します。キーには、バックスラッシュなしで大文字と小文字を区別しない名前を付ける必要があります。

レジストリキーの階層には、カーネルによって保存された「ハイブ」からプリロードされたレジストリキーのコンテンツにマップされた既知のルートキーハンドル(匿名ですが、有効な値は定数数値ハンドル)からのみアクセスできます。または、別のルートキー内のサブキーのコンテンツにマップされるか、含まれているサブキーと値へのアクセスを提供する登録済みサービスまたはDLLにマップされます。

たとえば、HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windowsは、HKEY_LOCAL_MACHINEルートキーのサブキー「Software」のサブキー「Microsoft」のサブキー「Windows」を参照します。

7つの事前定義されたルートキーがあり、従来はWin32 APIで定義された定数ハンドルに従って、または同義の略語(アプリケーションによって異なります)によって名前が付けられています。[4]

  • HKEY_LOCAL_MACHINEまたはHKLM
  • HKEY_CURRENT_CONFIGまたはHKCC
  • HKEY_CLASSES_ROOTまたはHKCR
  • HKEY_CURRENT_USERまたはHKCU
  • HKEY_USERSまたはHKU
  • HKEY_PERFORMANCE_DATA(Windows NTでのみ、Windowsレジストリエディタでは表示されません)[5]
  • HKEY_DYN_DATA(Windows 9xでのみ、Windowsレジストリエディターに表示されます)

Windowsの他のファイルやサービスと同様に、すべてのレジストリキーは、ユーザー特権、アプリケーションによって取得されたセキュリティトークン、またはシステムによって適用されるシステムセキュリティポリシーに応じて、アクセス制御リスト(ACL)によって制限される場合があります(これらの制限は事前定義されている場合があります)システム自体によって、ローカルシステム管理者またはドメイン管理者によって構成されます)。異なるユーザー、プログラム、サービス、またはリモートシステムは、階層の一部または同じルートキーからの個別の階層のみを表示する場合があります。

レジストリは、キー内に格納されている名前とデータのペアです。レジストリ値は、レジストリキーとは別に参照されます。レジストリキーに格納されている各レジストリ値には、大文字と小文字が区別されない一意の名前が付いています。Windows APIのクエリおよび操作するレジストリ値は、キーのパスおよび/またはハンドルを識別し、その親キーとは別に値の名前を取る機能。レジストリ値の名前に円記号が含まれている場合がありますが、そうすると、一部のレガシーWindowsレジストリAPI関数(Win32では使用が非推奨)を使用するときにキーパスと区別するのが困難になります。

各レジストリキーは連想配列に似ているため、この用語はやや誤解を招く可能性があります。標準的な用語では、各レジストリ値の名前部分を「キー」と呼びます。これらの用語は、Windows 3の16ビットレジストリからのホールドアウトであり、レジストリキーに任意の名前とデータのペアを含めることはできず、名前のない値(文字列である必要があります)を1つだけ含めることができました。この意味で、Windows 3レジストリは単一の連想配列のようなものであり、キー(「レジストリキー」と「連想配列キー」の両方の意味で)が階層を形成し、レジストリ値はすべて文字列でした。 32ビットレジストリが作成されたとき、キーごとに複数の名前付き値を作成する追加機能もあり、名前の意味は多少歪んでいました。[6] 以前の動作との互換性のために、各レジストリキーには「デフォルト」値があり、その名前は空の文字列です。

各値は、可変長およびエンコーディングで任意のデータを格納できますが、このデータの解析方法を定義するシンボリック型(数値定数として定義)に関連付けられています。標準タイプは次のとおりです。[7]

標準のレジストリ値タイプのリスト
タイプID シンボリックタイプ名 レジストリ値に格納されているデータの意味とエンコーディング
0 REG_NONE タイプなし(保存されている値がある場合)
1 REG_SZ 文字列値は、正常に記憶され、露出されたUTF-16 LE(Win32 API関数のUnicodeバージョンを使用する場合)、通常NUL文字で終了
2 REG_EXPAND_SZ 環境変数を含むことができる「拡張可能な」文字列値。通常はUTF-16LEに格納および公開され、通常はNUL文字で終了します。
3 REG_BINARY バイナリデータ(任意のデータ)
4 REG_DWORD / REG_DWORD_LITTLE_ENDIAN DWORDの値は、32ビットの符号なし 整数(0と4,294,967,295の間の数値[2 32 - 1])(リトルエンディアン
5 REG_DWORD_BIG_ENDIAN DWORDの値は、32ビットの符号なし 整数(0と4,294,967,295の間の数値[2 32 - 1])(BIG-エンディアン
6 REG_LINK ルートキーとターゲットキーへのパスを指定する、別のレジストリキーへのシンボリックリンク(UNICODE)
7 REG_MULTI_SZ 空でない文字列の順序付きリストであるマルチ文字列値。通常はUnicodeで格納および公開され、それぞれがnull文字で終了し、リストは通常​​2番目のnull文字で終了します。[8]
8 REG_RESOURCE_LIST リソースリスト(プラグアンドプレイハードウェアの列挙と構成で使用)
9 REG_FULL_RESOURCE_DESCRIPTOR リソース記述子(プラグアンドプレイハードウェアの列挙と構成で使用)
10 REG_RESOURCE_REQUIREMENTS_LIST リソース要件リスト(プラグアンドプレイハードウェアの列挙と構成で使用)
11 REG_QWORD / REG_QWORD_LITTLE_ENDIAN A QWORDの値、(に導入された64ビット整数(ビッグエンディアンまたはリトルエンディアン、または不特定のいずれか)のWindows 2000[9]

ルートキー

階層型データベースのルートレベルのキーは、通常、Windows API定義によって名前が付けられ、すべて「HKEY」で始まります。[2]これらは、「HK」で始まる3文字または4文字の短い名前に省略されることがよくあります(例:HKCUおよびHKLM)。技術的には、これらは特定のキーへの事前定義されたハンドル(既知の定数値)であり、メモリに保持されるか、ローカルファイルシステムに保存され、起動時にシステムカーネルによってロードされて(さまざまなアクセス権で)共有されるハイブファイルに保存されます。ローカルシステムで実行されているすべてのプロセス間、またはユーザーがシステムにログオンしたときにユーザーセッションで開始されたすべてのプロセスにロードおよびマップされます。

HKEY_LOCAL_MACHINE(ローカルマシン固有の構成データ)ノードとHKEY_CURRENT_USER(ユーザー固有の構成データ)ノードは、互いに類似した構造を持っています。ユーザーアプリケーションは通常、最初に「HKEY_CURRENT_USER \ Software \ Vendor's name \ Application's name \ Version \ Setting name」で設定を確認し、設定が見つからない場合は、代わりにHKEY_LOCAL_MACHINEキーの下の同じ場所を調べます[引用必要]。ただし、HKLMがHKCUよりも優先される可能性がある、管理者が適用するポリシー設定には、その逆が適用される場合があります。Windowsロゴプログラムは、ユーザの異なるタイプのデータが格納されていてもよい場所のための特定の要件を持っている、との考え方その最小特権アプリケーションを使用するために管理者レベルのアクセスが必要とされないようにするために従う必要があります。[a] [10]

HKEY_LOCAL_MACHINE(H​​KLM)

略称HKLM、HKEY_LOCAL_MACHINEは、ローカルコンピューターに固有の設定を格納します。[11]

HKLMによって配置されたキーは、実際にはディスクに保存されませんが、他のすべてのサブキーをマップするために、システムカーネルによってメモリに保持されます。アプリケーションは追加のサブキーを作成できません。 Windows NTでは、このキーには「SAM」、「SECURITY」、「SYSTEM」、「SOFTWARE」の4つのサブキーが含まれ、起動時に%SystemRoot%\ System32 \ configフォルダにあるそれぞれのファイルにロードされます。 5番目のサブキー「HARDWARE」は揮発性で動的に作成されるため、ファイルに保存されません(現在検出されているすべてのプラグアンドプレイデバイスのビューが表示されます)。 Windows Vista以降では、6番目と7番目のサブキー「COMPONENTS」と「BCD」がカーネルによってオンデマンドでメモリにマップされ、%SystemRoot%\ system32 \ config \ COMPONENTSまたはブート構成データからロードされます。システムパーティションの\ boot \ BCD。

  • 「HKLM \ SAM」キーは通常、ほとんどのユーザーにとって空のように見えます(ローカルシステムの管理者またはローカルシステムを管理するドメインの管理者からアクセスが許可されている場合を除く)。すべての「セキュリティアカウントマネージャー」を参照するために使用されます"(SAM)ローカルシステムが管理上承認または構成されているすべてのドメインのデータベース(SAMデータベースが" SAM "という名前のサブキーに格納されている実行中のシステムのローカルドメインを含む:他のサブキーは必要に応じて作成されます各SAMデータベースには、各ドメインで作成および構成されたすべての組み込みアカウント(主にグループエイリアス)と構成済みアカウント(ユーザー、グループ、およびそれらのエイリアス(ゲストアカウントと管理者アカウントを含む))が含まれます。そのドメインには、特に、そのドメインへのログオンに使用できるユーザー名、ドメイン内の一意の内部ユーザーID、有効な各認証プロトコルの各ユーザーのパスワードの暗号化ハッシュが含まれています。、ユーザーレジストリハイブの保存場所、さまざまなステータスフラグ(たとえば、アカウントを列挙してログオンプロンプト画面に表示できる場合)、およびアカウントが構成されたドメインのリスト(ローカルドメインを含む) 。
  • 「HKLM \ SECURITY」キーは通常、ほとんどのユーザーに対して空で表示され(管理者権限を持つユーザーからアクセスが許可されている場合を除く)、現在のユーザーがログオンしているドメインのセキュリティデータベースにリンクされています(ユーザーがログオンしている場合)。ローカルシステムドメインの場合、このキーは、ローカルマシンによって保存され、ローカルシステム管理者または組み込みの「システム」アカウントとWindowsインストーラーによって管理されるレジストリハイブにリンクされます。カーネルはそれにアクセスして、現在のユーザーとこのユーザーによって実行されるすべてのアプリケーションまたは操作に適用可能なセキュリティポリシーを読み取って適用します。また、現在のユーザーがログオンしているドメインのSAMデータベースに動的にリンクされている「SAM」サブキーも含まれています。
  • 「HKLM \ SYSTEM」キーは通常、ローカルシステムの管理者権限を持つユーザーのみが書き込み可能です。これには、Windowsシステムのセットアップ、セキュアランダムナンバージェネレーター(RNG)のデータ、ファイルシステムを含む現在マウントされているデバイスのリスト、システムハードウェアドライバーおよび実行中のサービスの代替構成を含むいくつかの番号付き「HKLM \ SYSTEM \ ControlSets」に関する情報が含まれます。ローカルシステム(現在使用されているシステムとバックアップを含む)では、これらのコントロールセットのステータスを含む「HKLM \ SYSTEM \ Select」サブキーと、起動時に動的にリンクされる「HKLM \ SYSTEM \ CurrentControlSet」ローカルシステムで現在使用されているコントロールセット。構成された各コントロールセットには、次のものが含まれます。
    • 既知のすべてのプラグアンドプレイデバイスを列挙し、それらをインストール済みのシステムドライバーに関連付ける(およびこれらのドライバーのデバイス固有の構成を保存する)「列挙型」サブキー、
    • インストールされているすべてのシステムドライバー(デバイス固有ではない構成、およびそれらがインスタンス化されるデバイスの列挙)とサービスとして実行されているすべてのプログラム(自動的に開始できる方法とタイミング)を一覧表示する「サービス」サブキー。
    • サービスとして実行されるさまざまなハードウェアドライバーとプログラム、およびその他すべてのシステム全体の構成を整理する「制御」サブキー。
    • 調整されたさまざまなプロファイル(システムドライバとサービスまたはアプリケーションのいずれかでデフォルトプロファイルを変更するために使用される「システム」または「ソフトウェア」設定を持つ各プロファイル)と「ハードウェア」を列挙する「ハードウェアプロファイル」サブキーこれらのプロファイルの1つに動的にリンクされているProfiles \ Current "サブキー。
  • 「HKLM \ SOFTWARE」サブキーには、ソフトウェアとWindowsの設定(デフォルトのハードウェアプロファイル)が含まれています。これは主に、アプリケーションとシステムのインストーラーによって変更されます。これはソフトウェアベンダーごとに編成されています(それぞれにサブキーがあります)が、Windowsユーザーインターフェイスの一部の設定用の「Windows」サブキー、ファイル拡張子、MIMEタイプ、オブジェクトクラスIDから登録されたすべての関連付けを含む「Classes」サブキーも含まれていますおよびインターフェイスID(OLE、COM / DCOM、およびActiveXの場合)、ローカルマシンでこれらのタイプを処理する可能性のあるインストール済みアプリケーションまたはDLL(ただし、これらの関連付けはユーザーごとに構成可能です。以下を参照)、および「ポリシー」アプリケーションおよびシステムサービス(ローカルネットワークドメインの外部で実行されているリモートシステムまたはサービスの認証、承認、または禁止に使用される中央証明書ストアを含む)に一般的な使用ポリシーを適用するためのサブキー(ベンダーによって編成されています)。
  • 「HKLM \ SOFTWARE \ Wow6432Node」キーは、64ビットWindows OS上の32ビットアプリケーションで使用され、「HKLM \ SOFTWARE」と同等ですが別個のものです。キーパスWoW64によってHKLM \ SOFTWARE [12]として32ビットアプリケーションに透過的に提示されます(32ビットアプリケーションが%SystemRoot%\ Syswow64を%SystemRoot%\ System32として参照するのと同様の方法で)

HKEY_CLASSES_ROOT(HKCR)

略称HKCR、HKEY_CLASSES_ROOTには、ファイルの関連付けOLEオブジェクトクラスIDなどの登録済みアプリケーションに関する情報が含まれており、これらのアイテムの処理に使用されるアプリケーションに関連付けられています。のWindows 2000以上と、HKCRは、ユーザーベースのHKCU \ソフトウェア\クラスとマシンベースのHKLM \ SOFTWARE \クラスをまとめたものです。上記の両方のサブキーに特定の値が存在する場合、HKCU \ Software \ Classesのサブキーが優先されます。[13]この設計では、COMオブジェクトのマシン固有またはユーザー固有の登録が可能です。

HKEY_USERS(HKU)

省略形のHKUであるHKEY_USERSには、マシンにアクティブにロードされている各ユーザープロファイルのHKEY_CURRENT_USERキーに対応するサブキーが含まれますが、ユーザーハイブは通常、現在ログインしているユーザーに対してのみロードされます。

HKEY_CURRENT_USER(HKCU)

略称HKCU、HKEY_CURRENT_USERは、現在ログインしているユーザーに固有の設定を格納します。[14] HKEY_CURRENT_USERキーは、ユーザーに対応するHKEY_USERSのサブキーへのリンクです。両方の場所で同じ情報にアクセスできます。固有のサブキーの参照である"(HKU)\(SID)\ ..."(SID)対応のWindows SID。 「(HKCU)」キーのサフィックスが「(HKCU)\ Software \ Classes \ ...」の場合、「(HKU)\(SID)_CLASSES \ ...」に対応します。つまり、サフィックスの文字列は「」です。 _CLASSES "が(SID)に追加されます。
Windows NTシステムでは、各ユーザーの設定は、独自のDocuments and Settingsサブフォルダー(またはWindows Vista以降では独自のUsersサブフォルダー)内のNTUSER.DATおよびUSRCLASS.DATと呼ばれる独自のファイルに保存されます。このハイブの設定は、マシンからマシンへの移動プロファイルでユーザーをフォローします

HKEY_PERFORMANCE_DATA

このキーは、NTカーネル自体、またはパフォーマンスデータを提供する実行中のシステムドライバー、プログラム、およびサービスのいずれかによって提供されるパフォーマンスデータにランタイム情報を提供します。このキーはハイブに保存されず、レジストリエディターにも表示されませんが、Windows APIのレジストリ関数を介して、またはタスクマネージャーの[パフォーマンス]タブを介して簡略化されたビューで表示されます(上のいくつかのパフォーマンスデータのみ)ローカルシステム)またはより高度なコントロールパネル(リモートシステムからも含めて、これらのデータの収集とログ記録を可能にするパフォーマンスモニターまたはパフォーマンスアナライザーなど)を介して。

HKEY_DYN_DATA

このキーは、Windows 95、Windows 98、およびWindowsMEでのみ使用されます[15]プラグアンドプレイやネットワークパフォーマンス統計など、ハードウェアデバイスに関する情報が含まれています。このハイブの情報もハードドライブに保存されません。プラグアンドプレイ情報は、起動時に収集および構成され、メモリに保存されます。[16]

じんましん

レジストリは統合された階層データベースとして表示されますが、レジストリのブランチは実際にはハイブと呼ばれる多数のディスクファイルに格納されています[17] ワードハイブは、構成内冗談。)[18]

一部のハイブは揮発性であり、ディスクにまったく保存されません。この例は、HKLM \ HARDWAREで始まるブランチのハイブです。このハイブは、システムハードウェアに関する情報を記録し、システムが起動してハードウェア検出を実行するたびに作成されます。

システム上のユーザーの個々の設定は、ユーザーごとにハイブ(ディスクファイル)に保存されます。ユーザーのログイン時に、システムはHKEY_USERSキーの下にユーザーハイブをロードし、現在のユーザーを指すようにHKCU(HKEY_CURRENT_USER)シンボリック参照を設定します。これにより、アプリケーションは、HKCUキーの下で、現在のユーザーの設定を暗黙的に保存/取得できます。

すべてのハイブが一度にロードされるわけではありません。起動時には、最小限のハイブのセットのみがロードされ、その後、オペレーティングシステムの初期化時、ユーザーのログイン時、またはアプリケーションによってハイブが明示的にロードされるたびに、ハイブがロードされます。

ファイルの場所

レジストリは物理的にいくつかのファイルに保存されます。これらのファイルは通常、レジストリ内のデータを操作するために使用されるユーザーモードAPIから難読化されています。Windowsのバージョンに応じて、さまざまなファイルとこれらのファイルの場所が異なりますが、それらはすべてローカルマシン上にあります。WindowsNTのシステムレジストリファイルの場所は%SystemRoot%\System32\Config;です。ユーザー固有のHKEY_CURRENT_USERユーザーレジストリハイブはNtuser.dat、ユーザープロファイル内に保存されます。ユーザーごとにこれらの1つがあります。ユーザーが移動プロファイルを持っている場合、このファイルはログアウト時とログイン時にそれぞれサーバーとの間でコピーされます。UsrClass.datという名前の2番目のユーザー固有のレジストリファイルにはCOMレジストリエントリが含まれており、デフォルトではローミングしません。

Windows NT

Windows NTシステムは、レジストリをバイナリファイル形式で保存します。このファイル形式は、これらのオペレーティングシステムのレジストリエディタでエクスポート、ロード、およびアンロードできます。次のシステムレジストリファイルは、に保存されてい%SystemRoot%\System32\Config\ます。

  • Sam – HKEY_LOCAL_MACHINE \ SAM
  • Security – HKEY_LOCAL_MACHINE \ SECURITY
  • Software – HKEY_LOCAL_MACHINE \ SOFTWARE
  • System – HKEY_LOCAL_MACHINE \ SYSTEM
  • Default – HKEY_USERS \ .DEFAULT
  • Userdiff–ハイブに関連付けられていません。オペレーティングシステムをアップグレードする場合にのみ使用されます。[19]

次のファイルは、各ユーザーのプロファイルフォルダーに保存されます。

  • %USERPROFILE%\Ntuser.dat– HKEY_USERS \ <ユーザーSID >(HKEY_CURRENT_USERによってリンクされています)

Windows 2000、Server 2003、およびWindows XPの場合、ファイルの関連付けとCOM情報には、次の追加のユーザー固有のファイルが使用されます。

  • %USERPROFILE%\Local Settings\Application Data\Microsoft\Windows\Usrclass.dat (パスはローカライズされています)– HKEY_USERS \ <ユーザーSID> _Classes(HKEY_CURRENT_USER \ Software \ Classes)

Windows Vista以降では、パスが次のように変更されました。

  • %USERPROFILE%\AppData\Local\Microsoft\Windows\Usrclass.dat(パスはローカライズされていません)エイリアス%LocalAppData%\Microsoft\Windows\Usrclass.dat– HKEY_USERS \ <ユーザーSID> _Classes(HKEY_CURRENT_USER \ Software \ Classes)

Windows 2000は、レジストリハイブ(.ALT)の代替コピーを保持し、破損が検出されるとそれに切り替えようとします。[20] WindowsXPおよびWindowsServer 2003はSystem.altハイブを維持しません。これらのバージョンのWindowsのNTLDRSystem.logファイルを処理して、シャットダウンまたはクラッシュ中に一貫性がなくなったシステムハイブを最新の状態にすることができるためです。さらに、この%SystemRoot%\Repairフォルダーには、インストール後およびWindowsの最初の正常な起動後に作成されたシステムのレジストリハイブのコピーが含まれています。

各レジストリデータファイルには、「。log」拡張子の付いたファイルが関連付けられています。このファイルは、次回の起動時に中断された更新を確実に完了できるようにするために使用されるトランザクションログとして機能します[21] 内部的には、レジストリファイルは「セル」のコレクションを含む4kBの「ビン」に分割されます [21]

Windows 9x

レジストリファイルは、に保存されている%WINDIR%名前でディレクトリUSER.DATSYSTEM.DATの添加でCLASSES.DATのWindows MEインチ また、各ユーザープロファイル(プロファイルが有効になっている場合)USER.DATには、のユーザーのプロファイルディレクトリにある独自のファイルがあります%WINDIR%\Profiles\<Username>\

Windows 3.11

唯一のレジストリファイルが呼び出さREG.DATれ、%WINDIR%ディレクトリに保存されます。

Windows 10 Mobile

注:レジストリファイルにアクセスするには、次のいずれかを使用して電話を特別なモードに設定する必要があります。 

  • WpInternals(モバイルデバイスをフラッシュモードにします。)
  • InterOpツール(MTPを使用してMainOSパーティションをマウントします。)

上記の方法のいずれかが機能した場合-デバイスレジストリファイルは、次の場所にあります。

 {電話} \ EFIESP \ Windows \ System32 \ config

注:InterOp Toolsには、レジストリエディターも含まれています。

編集

レジストリエディタ

レジストリには、オペレーティングシステム、インストールされているアプリケーション、および各ユーザーとアプリケーションの個別の設定に関する重要な構成情報が含まれています。レジストリ内のオペレーティングシステム構成を不注意に変更すると、元に戻せない損傷が発生する可能性があるため、通常、インストール/構成および削除中にレジストリデータベースに変更を加えるのはインストーラプログラムのみです。ユーザーがレジストリを手動で編集する場合は、変更前にレジストリのバックアップを実行することをお勧めします。[22]プログラムをコントロールパネルから削除しても、完全に削除されない場合があります。不足しているプログラムへの参照によってエラーや不具合が発生した場合、ユーザーはプログラムファイルなどのディレクトリ内を手動で確認する必要があります。この後、ユーザーはレジストリ内のアンインストールされたプログラムへの参照を手動で削除する必要がある場合があります。これは通常、RegEdit.exeを使用して実行されます。[23]レジストリの編集は、Windows固有の問題を回避するときに必要になる場合があります。たとえば、ドメインにログオンする際の問題は、レジストリを編集することで解決できます。[24]

Windowsレジストリは、RegEdit.exeなどのプログラムを使用して手動で編集できますが、これらのツールは、最終更新日などのレジストリのメタデータの一部を公開しません。

3.1 / 95シリーズのオペレーティングシステムのレジストリエディタはRegEdit.exeであり、WindowsNTの場合はRegEdt32.exeです。機能はWindowsXPに統合されています。RegEdit.exeと同様のオプションのツールやサードパーティのツールは、多くのWindowsCEバージョンで利用できます。

レジストリエディタを使用すると、ユーザーは次の機能を実行できます。

  • レジストリキー、サブキー、値、および値データの作成、操作、名前変更[25]、および削除
  • インポートとエクスポート。REGファイル、バイナリハイブ形式でデータをエクスポート
  • レジストリハイブ形式ファイルのロード、操作、およびアンロード(Windows NTシステムのみ)
  • ACLに基づいてアクセス許可を設定する(Windows NTシステムのみ)
  • ユーザーが選択したレジストリキーをお気に入りとしてブックマークする
  • キー名、値名、値データで特定の文字列を検索する
  • 別のネットワークコンピュータでレジストリをリモート編集する

.REGファイル

.REGファイル(登録エントリとも呼ばれます)は、INIベースの構文を使用してレジストリの一部をエクスポートおよびインポートするためのテキストベースの人間が読めるファイルです。 Windows 2000以降では、最初に文字列Windows Registry Editorバージョン5.00が含まれ、Unicodeベースです。上のWindows 9x系とNT 4.0システムでは、彼らは文字列含まれているREGEDIT4をしているANSIがベース。[26] Windows9x形式の.REGファイルはWindows2000以降と互換性があります。これらのシステム上のWindowsのレジストリエディタは.REG、Windows 9x / NT形式でのファイルのエクスポートもサポートしています。データは.REG、次の構文を使用してファイルに保存されます。[26]

[<ハイブ名> \ <キー名> \ <サブキー名>] 
"値名" = <値タイプ>:<値データ>

キーのデフォルト値は、「値名」の代わりに「@」を使用して編集できます。

[<ハイブ名> \ <キー名> \ <サブキー名>] 
@ = <値の種類>:<値のデータ>

文字列値には<値型>は必要ありませんが(例を参照)、円記号( '\')は円記号( '\\')として記述し、引用符( '"')は円記号( '\ "')。

たとえば、値「値A」、「値B」、「値C」、「値D」、「値E」、「値F」、「値G」、「値H」、「値I」を追加するにはHKLM \ SOFTWARE \ Foobarキーへの「、「値J」、「値K」、「値L」、および「値M」:

Windowsレジストリエディタバージョン5.00

[ HKEY_LOCAL_MACHINE \ SOFTWARE \ Foobar] 
"値A" = "<エスケープ文字を含む文字列値データ>" 
"値B" = hex:<バイナリデータ(16進値のコンマ区切りリストとして)> 
"値C" = dword: <DWORD値整数> 
"値D" = hex(0):<REG_NONE(16進値のコンマ区切りリストとして)> 
"値E" = hex(1):<REG_SZ(16進値のコンマ区切りリストとしてUTF-16LE NULで終了する文字列)> 
"Value F" = hex(2):<拡張可能な文字列値データ(UTF-16LE NULで終了する文字列を表す16進値のコンマ区切りリストとして)> 
"Value G" =hex(3):<バイナリデータ(16進値のコンマ区切りリストとして)>; 「値B」に等しい
「値H」= hex(4):<DWORD値(リトルエンディアンバイト順の4つの16進値のコンマ区切りリストとして)> 
「値I」= hex(5):<DWORD値(ビッグエンディアンバイト順の4つの16進値のコンマ区切りリストとして)> 
"Value J" = hex(7):<マルチストリング値データ(UTF-16LE NULで終了する16進数値のコンマ区切りリストとして)文字列)> 
"値K" = hex(8):<REG_RESOURCE_LIST(16進値のコンマ区切りリストとして)> 
"値L" = hex(a):<REG_RESOURCE_REQUIREMENTS_LIST(16進値のコンマ区切りリストとして)> 
"値M"= hex(b):<QWORD値(リトルエンディアンバイト順の8つの16進値のコンマ区切りリストとして)>

.REGファイルのデータは、これらのファイルをダブルクリックするか、コマンドラインの/ sスイッチを使用して、レジストリに追加/マージできます。REGファイルを使用して、レジストリデータを削除することもできます。

キー(およびすべてのサブキー、値、データ)を削除するには、キー名の前にマイナス記号( "-")を付ける必要があります。[26]

たとえば、HKLM \ SOFTWARE \ Foobarキー(およびすべてのサブキー、値、データ)を削除するには、

[ - HKEY_LOCAL_MACHINE \ SOFTWARE \ foob​​arの]

値(およびそのデータ)を削除するには、削除する値の後に等号( "=")の後にマイナス記号( "-")を付ける必要があります。[26]

たとえば、HKLM \ SOFTWARE \ Foobarキーから「値A」と「値B」の値(およびそれらのデータ)のみを削除するには、次のようにします。

[ HKEY_LOCAL_MACHINE \ SOFTWARE \ Foobar] 
"値A" =- 
"値B" =-

キーHKLM \ SOFTWARE \ Foobar(およびそのデータ)のデフォルト値のみを削除するには:

[ HKEY_LOCAL_MACHINE \ SOFTWARE \ Foobar] 
@ =-

セミコロンで始まる行はコメントと見なされます。

; これはコメントです。これは、.regファイルの任意の部分に配置できます
[ HKEY_LOCAL_MACHINE \ SOFTWARE \ Foobar] 
"Value" = "文字列の例"

グループポリシー

Windowsグループポリシーは、ポリシーに基づいて、多数のマシンまたは個々のユーザーのレジストリキーを変更できます。ポリシーが最初にマシンまたはマシンの個々のユーザーに対して有効になると、ポリシーの一部として指定されたレジストリ設定がマシンまたはユーザー設定に適用されます。

Windowsはまた、更新されたポリシーを探し、定期的に、通常は90分ごとに適用します。[27]

ポリシーは、そのスコープを通じて、ポリシーを適用するマシンやユーザーを定義します。マシンまたはユーザーがポリシーの範囲内にあるかどうかは、組織ディレクトリ内のマシンまたはユーザーアカウント、特定のユーザーまたはマシンアカウント、またはセキュリティグループの場所をフィルタリングできる一連のルールによって定義されます。より高度なルールは、Windows ManagementInstrumentationを使用して設定できます。このようなルールは、コンピューターベンダー名、CPUアーキテクチャ、インストールされているソフトウェア、接続されているネットワークなどのプロパティでフィルタリングできます。

たとえば、管理者は、経理部門のマシンのレジストリ設定の1つのセットを使用してポリシーを作成し、訪問者エリアのキオスク端末のレジストリ設定の別の(ロックダウン)セットを使用してポリシーを作成できます。マシンをあるスコープから別のスコープに移動すると(名前の変更や別の組織単位への移動など)、正しいポリシーが自動的に適用されます。ポリシーが変更されると、現在そのスコープ内にあるすべてのマシンに自動的に再適用されます。

ポリシーは、設定を選択および変更するためのユーザーインターフェイスを提供するいくつかの管理用テンプレートを介して編集されます。管理用テンプレートのセットは拡張可能であり、そのようなリモート管理をサポートするソフトウェアパッケージは独自のテンプレートを登録できます。

コマンドライン編集

reg
開発者マイクロソフト
オペレーティング・システムマイクロソフトウィンドウズ
タイプ指示
ライセンスプロプライエタリ 商用ソフトウェア
Webサイトdocs .microsoft .com / en-us / windows-server / Administration / windows-commands / reg
レジーニ
開発者マイクロソフト
オペレーティング・システムマイクロソフトウィンドウズ
タイプ指示
ライセンスプロプライエタリ 商用ソフトウェア
Webサイトdocs .microsoft .com / en-us / windows-server / Administration / windows-commands / regini

レジストリは、コマンドラインからさまざまな方法で操作できますReg.exeそしてRegIni.exe、ユーティリティツールは、Windows XPおよびそれ以降のバージョンのWindowsに含まれています。レガシーバージョンのWindowsの代替の場所には、リソースキットCDまたはWindowsの元のインストールCDが含まれます。

また、.REG次のコマンドを使用して、コマンドラインからファイルをインポートできます。

RegEdit.exe / sファイル

/ sは、ファイルがレジストリにサイレントマージされることを意味します場合は/s、パラメータが省略されたユーザーが操作を確認するメッセージが表示されます。Windows 98、Windows 95、およびWindows XPの少なくとも一部の構成では、/sスイッチRegEdit.exeによって、管理者が無効にできるレジストリの設定無視されます。/sスイッチを使用するとRegEdit.exe、操作が失敗した場合とは異なり、適切なリターンコードが返されませんReg.exe

RegEdit.exe / eファイル

レジストリ全体をV5形式でUNICODE.REGファイルにエクスポートします。

RegEdit.exe / eファイルHKEY_CLASSES_ROOT [\ <key>]
RegEdit.exe / eファイルHKEY_CURRENT_CONFIG [\ <key>]
RegEdit.exe / eファイルHKEY_CURRENT_USER [\ <key>]
RegEdit.exe / eファイルHKEY_LOCAL_MACHINE [\ <key>]
RegEdit.exe / eファイルHKEY_USERS [\ <key>]

指定された(サブ)キー(スペースが含まれている場合は引用符で囲む必要があります)のみをエクスポートします。

RegEdit.exe / aファイル

レジストリ全体をV4形式でANSI.REGファイルにエクスポートします。

RegEdit.exe / aファイル <キー>

指定された(サブ)キー(スペースが含まれている場合は引用符で囲む必要があります)のみをエクスポートします。

を使用することも可能Reg.exeです。レジストリ値バージョンの値を表示するサンプルを次に示します。

Reg.exe  QUERY  HKLM \ Software \ Microsoft \ ResKit  / v バージョン

その他のコマンドラインオプションは、VBScriptのか、JScriptのと一緒ます。CScriptWMIまたはWMIC.exeおよびWindows PowerShellを

レジストリのアクセス許可はRegIni.exe、とSubInACL.exeツールを使用してコマンドラインから操作できます。たとえば、HKEY_LOCAL_MACHINE \ SOFTWAREキーのアクセス許可は、次を使用して表示できます。

SubInACL.exe  / keyreg  HKEY_LOCAL_MACHINE \ SOFTWARE  / display

PowerShellコマンドとスクリプト

PowerShellを使用してレジストリをナビゲートする

Windows PowerShellには、ファイルシステムと同様の場所の種類としてレジストリを表示するレジストリプロバイダーが付属しています。ファイルシステム内のファイルとディレクトリを操作するために使用されるのと同じコマンドを使用して、レジストリのキーと値を操作できます。[28]

また、ファイルシステムと同様に、PowerShellは、コマンドがデフォルトで動作するコンテキストを定義する現在の場所の概念を使用します。Get-ChildItem(また、エイリアスを介して利用可能なlsdirまたはgci)現在位置の子キーを取り出します。使用してSet-Location(またはエイリアスcd)ユーザは、レジストリの別のキーに現在の位置を変更するコマンド。[28]アイテムの名前変更、アイテムの削除、新しいアイテムの作成、またはアイテムまたはプロパティのコンテンツの設定を行うコマンドを使用して、キーの名前を変更したり、キーまたはサブツリー全体を削除したり、値を変更したりできます。

管理者は、PowerShellスクリプトファイルを使用して、実行時にレジストリに変更を加えるスクリプトを準備できます。このようなスクリプトは、個々のマシンで実行できる管理者に配布できます。PowerShellレジストリプロバイダーはトランザクションをサポートします。つまり、レジストリへの複数の変更を1つのアトミックトランザクションにバンドルできます。アトミックトランザクションは、すべての変更がデータベースにコミットされるか、スクリプトが失敗した場合、どの変更もデータベースにコミットされないことを保証します。[28] [29]

プログラムまたはスクリプト

レジストリは、Advanced Windows 32 Base API Library(advapi32.dll)のAPIを介して編集できます。[30]

レジストリAPI関数のリスト
RegCloseKey RegOpenKey RegConnectRegistry RegOpenKeyEx
RegCreateKey RegQueryInfoKey RegCreateKeyEx RegQueryMultipleValues
RegDeleteKey RegQueryValue RegDeleteValue RegQueryValueEx
RegEnumKey RegReplaceKey RegEnumKeyEx RegRestoreKey
RegEnumValue RegSaveKey RegFlushKey RegSetKeySecurity
RegGetKeySecurity RegSetValue RegLoadKey RegSetValueEx
RegNotifyChangeKeyValue RegUnLoadKey

多くのプログラミング言語は、組み込みで提供するランタイムライブラリの関数やクラスの基礎となるWindowsのAPIをラップし、それによって、レジストリ内のストアの設定にプログラムを有効にする(例えばMicrosoft.Win32.RegistryVB.NETC# またはTRegistryデルファイFree Pascalの)。Visual Basic 6などのCOM対応アプリケーションは、WSHオブジェクトを使用できます。もう1つの方法は、Windowsリソースキットツールをコードから実行して使用することです[31]。ただし、これはプログラミングの方法としては不十分と考えられてます。 WScript.ShellReg.exe

同様に、Perl(with )、Python(winreg付き)、TCL(レジストリパッケージにバンドルされている)、[32] Windows PowershellWindows Scripting Hostなどのスクリプト言語でスクリプトからのレジストリ編集が可能です。 Win32::TieRegistry

オフライン編集

Windows DriverKitから入手できるoffreg.dll [33]は、advapi32.dllによって提供されるものと同様に、現在ロードされていないレジストリハイブを作成および操作するための一連のAPIを提供します。

Windows PEまたはLinuxからオフラインシステムのレジストリ(ハイブ)を編集することもできます(後者の場合、オープンソースツールを使用します)。

COM自己登録

登録不要のCOMが導入される前は、開発者は、初期化コードをインプロセスおよびアウトプロセスのバイナリに追加して、そのオブジェクトが機能するために必要なレジストリ構成を実行することをお勧めしていました。 .DLLや.OCXファイルなどのインプロセスバイナリの場合、モジュールは通常、インストールプログラムから呼び出すか、Regsvr32.exeなどのユーティリティを使用して手動で呼び出すことができるDllInstall()[34]という関数をエクスポートしました[35]アウトプロセスバイナリは通常、必要なレジストリ設定を作成または削除したコマンドライン引数/ Regserverおよび/ Unregserverをサポートします。[36] DLL地獄の ために壊れたCOMアプリケーション通常、問題は、インストールプログラムを再度起動しなくても、RegSvr32.exeまたは/ RegServerスイッチを使用して修復できます。[37]

高度な機能

Windowsは、特定のレジストリキーが変更された場合に、ユーザーモードアプリケーションが通知イベントを受信するように登録できるようにするAPIを公開しています。[38] APIを使用して、カーネルモードアプリケーションが他のアプリケーションによって行われたレジストリ呼び出しをフィルタリングおよび変更できるようにすることもできます。[39]

リモートレジストリサービスが実行され、正しく構成されており、そのネットワークトラフィックがファイアウォールで保護されていない場合、WindowsはRegConnectRegistry機能[40]を介した別のコンピューターのレジストリへのリモートアクセスもサポートします[41]

セキュリティ

Windows NTバージョンのレジストリ内の各キーには、セキュリティ記述子を関連付けることができますセキュリティ記述子には、アクセス許可を付与または拒否するユーザーグループまたは個々のユーザーを説明するアクセス制御リスト(ACL)が含まれています。レジストリ権限のセットには、ユーザーまたはユーザーのグループに対して明示的に許可または拒否できる10の権限/権限が含まれています。

レジストリのアクセス許可
許可 説明
クエリ値 レジストリキーの値を読み取る権利。
設定値 新しい値を書く権利
サブキーを作成 サブキーを作成する権利。
サブキーを列挙する サブキーの列挙を許可します。
通知する レジストリキーまたはサブキーの変更通知を要求する権利。
リンクを作成する オペレーティングシステムによって予約されています。
消去 キーを削除する権利。
DACLを書く コンテナのDACLの権限を変更する権利。
所有者を書く コンテナの所有者を変更する権利。
読み取り制御 DACLを読み取る権利。

オペレーティングシステム内の他のセキュリティ保護可能なオブジェクトと同様に、セキュリティ記述子の個々のアクセス制御エントリ(ACE)は、明示的にすることも、親オブジェクトから継承することもできます。[42]

Windows Resource Protectionは、セキュリティを使用して管理者とシステムの書き込みアクセスを拒否するWindows Vista以降のバージョンのWindowsの機能であり、マルウェアや偶発的な変更からシステムの整合性を保護します。[43]

セキュリティ記述子の特別なACEは、レジストリキーとサブキーの必須整合性制御実装することもできます。低い整合性レベルで実行されているプロセスは、プロセスのアカウントにACLを介したアクセスが許可されている場合でも、レジストリキー/値を書き込んだり、変更したり、削除したりすることはできません。たとえば、保護モードで実行されているInternet Explorerは、現在ログオンしているユーザーの中整合性および低整合性のレジストリキー/値を読み取ることができますが、変更できるのは低整合性キーのみです。[44]

セキュリティ以外の理由により、レジストリキーを削除または編集することはできません。NUL文字を含むレジストリキーは、標準のレジストリエディタでは削除できず、削除にはRegDelNullなどの特別なユーティリティが必要です[45] [46]

バックアップとリカバリ

Windowsのさまざまなエディションは、レジストリをバックアップおよび復元するためのさまざまな方法を何年にもわたってサポートしてきましたが、その一部は現在非推奨になっています。

  • システムの復元は、Windowsが起動可能である限り、またはWindows回復環境(Windows Vista以降)からレジストリをバックアップおよび復元できます
  • NTBackupは、システム状態の一部としてレジストリをバックアップし、復元することができます。Windows XPの自動システム回復は、レジストリを復元することもできます。
  • Windows NTでは、スタートメニューの[最新の正常な構成]オプションにより、HKLM\SYSTEM\CurrentControlSetハードウェアとデバイスのドライバー情報を格納するキーが再リンクされます
  • Windows98およびWindowsMEには、コマンドライン(Scanreg.exe)およびGUI(Scanregw.exe)レジストリチェッカーツールが含まれており、レジストリの整合性をチェックおよび修正し、デフォルトで最大5つの自動定期バックアップを作成し、手動で、または破損した場合はいつでも復元します。検出されました。[47]レジストリチェッカーツールは、デフォルトでレジストリを%Windir%\SysbckupScanreg.exeにバックアップし、MS-DOSから実行することもできます[48]
  • Windows 95 CD-ROMには、レジストリをバックアップおよび復元するための緊急回復ユーティリティ(ERU.exe)と構成バックアップツール(Cfgback.exe)が含まれていました。さらに、Windows 95は、起動が成功するたびに、レジストリをファイルsystem.da0およびuser.da0にバックアップします。
  • Windows NT 4.0にRDISK.EXE、レジストリ全体をバックアップおよび復元するためのユーティリティが含まれています。[49]
  • Windows 2000 Resource Kitには、レジストリのバックアップとリカバリのために、Regback.exeとRegRest.exeと呼ばれるサポートされていないユーティリティのペアが含まれていました。[50]
  • レジストリの定期的な自動バックアップは、Windows 10 May 2019 Update(バージョン1903)でデフォルトで無効になっています代わりに、システムの復元を使用することをお勧めします。[51]

ポリシー

グループポリシー

Windows 2000以降のバージョンのWindowsは、グループポリシー使用して、グループポリシー処理エンジンのレジストリ固有のクライアント拡張機能を介してレジストリ設定を適用します。[52]ポリシーはgpedit.mscを使用して単一のコンピューターにローカルに適用することもを使用してドメイン内の複数のユーザーやコンピューターに適用することもできますgpmc.msc

レガシーシステム

Windows 95、Windows 98、Windows ME、およびWindows NT 4.0では、管理者は、ポリシーファイル(POLICY.POLと呼ばれる特別なファイルを使用してレジストリにマージできます。ポリシーファイルを使用すると、管理者は、管理者以外のユーザーがInternetExplorerのセキュリティレベルやデスクトップの背景の壁紙などのレジストリ設定を変更できないようにすることができます。ポリシーファイルは主に、不正なユーザーや不注意なユーザーからビジネスを保護する必要がある多数のコンピューターを使用するビジネスで使用されます。

ポリシーファイルのデフォルトの拡張子は.POLです。ポリシーファイルは、ユーザーおよびグループごとに適用する設定をフィルタリングします(「グループ」は定義されたユーザーのセットです)。これを行うには、ポリシーファイルがレジストリにマージされ、ユーザーが設定を元に戻すだけでポリシーファイルを回避できないようにします。ポリシーファイルは通常LANを介して配布されますが、ローカルコンピューターに配置することもできます。

ポリシーファイルはpoledit.exe、Windows 95 / Windows 98の場合はファイル名で、WindowsNTの場合はコンピュータ管理モジュールを使用するMicrosoftの無料ツールによって作成されます。エディタには、権限を使用するシステムで実行するための管理権限が必要です。エディタは、ローカルコンピュータの現在のレジストリ設定を直接変更することもできます。また、リモートレジストリサービスが別のコンピュータにインストールされて開始されている場合は、そのコンピュータのレジストリを変更することもできます。ポリシーエディタは.ADM、Windowsシェルが提供する設定を含むファイルから変更できる設定をロードします.ADMファイルはテキスト形式で、すべての文字列が一つの場所に格納できるようにすることで簡単にローカライズをサポートしています。

仮想化

INIファイルの仮想化

Windows NTカーネルは、「InifileMapping」と呼ばれる機能を使用して、HKEY_CURRENT_USERなどのレジストリの場所にある仮想ファイルへのINIファイル関連のAPIのリダイレクトをサポートします[53] この機能は、16ビットバージョンのWindows用に作成されたレガシーアプリケーションを、システムフォルダがユーザー固有のデータまたは構成の適切な場所と見なされなくなったWindowsNTプラットフォームで実行できるようにするために導入されましたこの機能は元々16ビットアプリケーションを対象としていましたが、非準拠の32ビットアプリケーションもこの方法でリダイレクトできます。

レジストリの仮想化

Windows Vistaでは、制限付きレジストリ仮想化が導入されました。これにより、最小特権原則を尊重せず、代わりに読み取り専用のシステムの場所(HKEY_LOCAL_MACHINEハイブなど)にユーザーデータを書き込もうとする、不適切に記述されたアプリケーションが、より適切な場所にサイレントにリダイレクトされます。 、アプリケーション自体を変更せずに。

同様に、アプリケーションの仮想化は、アプリケーションの無効なレジストリ操作をすべてファイルなどの場所にリダイレクトします。これをファイル仮想化と併用すると、アプリケーションをマシンにインストールせずに実行できます。

整合性の低いプロセスでも、レジストリの仮想化が使用される場合があります。たとえば、WindowsVista以降で「保護モード」で実行されているInternetExplorer 7または8は、一部のクラスのセキュリティエクスプロイトを苛立たせるために、ActiveXコントロールによるレジストリ書き込みをサンドボックス化された場所に自動的にリダイレクトします

アプリケーション互換性ツールキット[54]、HKEY_LOCAL_MACHINEまたはHKEY_CLASSES_ROOTレジストリ操作をHKEY_CURRENT_USERに透過的にリダイレクトして、権限が不十分なユーザーに対してアプリケーションが機能しない原因となるLUA」バグに対処できるシム提供します

短所

レジストリが破損した場合はオペレーティングシステムの再インストールが必要だったため批評家はWindows95のレジストリを単一障害点とラベル付けしました[要出典]ただし、Windows NTはトランザクションログを使用して、更新中の破損から保護します。現在のバージョンのWindowsは、2つのレベルのログファイルを使用して、データベースの更新中に停電や同様の壊滅的なイベントが発生した場合でも整合性を確保します。[55]回復不能なエラーが発生した場合でも、Windowsは、システムの起動中に破損したレジストリエントリを修復または再初期化できます。[55]

同等物と代替案

Windowsでは、プログラムデータを格納するためのレジストリの使用は、開発者の裁量の問題です。Microsoftは、開発者が代わりに使用できるXMLファイル(MSXML経由)またはデータベースファイル(SQL Server Compact経由)にデータを格納するためのプログラミングインターフェイスを提供しています開発者は、Microsoft以外の代替手段を自由に使用したり、独自のデータストアを開発したりすることもできます。

Windowsレジストリのバイナリベースのデータベースモデルとは対照的に、他の一部のオペレーティングシステムはデーモンとアプリケーションの構成に別々のプレーンテキストファイルを使用しますが、管理を容易にするためにこれらの構成をグループ化します。

  • ではUnixライク(含むオペレーティングシステムのLinux従う)はFilesystem Hierarchy Standard、伝統的にあるファイルに保存され、システム全体の構成ファイル(Windows上のHKEY_LOCAL_MACHINEに表示されるものと同様の情報)/etc/およびそのサブディレクトリ、または時々で/usr/local/etc。ユーザーごとの情報(HKEY_CURRENT_USERの情報とほぼ同等の情報)は、ユーザーのホームディレクトリ内の隠しディレクトリとファイル(ピリオド/ピリオドで始まる)に保存されます。ただし、XDG準拠のアプリケーションは、ベースディレクトリ仕様で定義されている環境変数を参照する必要があります。[56]
  • ではMacOSの、システム全体の設定ファイルは通常に保存されている/Library/ユーザーごとの設定ファイルが対応に格納されているのに対し、フォルダ~/Library/、ユーザーのホームディレクトリ内のフォルダ、およびシステムによって設定された設定ファイルがです/System/Library/。これらのそれぞれのディレクトリ内で、アプリケーションは通常、プロパティリストファイルをPreferences/サブディレクトリに保存します
  • RISC OSMIPS RISC / osと混同しないでください)は、構成データにディレクトリを使用します。これにより、Windowsアプリケーションを代表する個別のインストールプロセスとは対照的に、アプリケーションをアプリケーションディレクトリコピーできます。このアプローチは、Linux用ROXデスクトップも使用されます。[57] このディレクトリベースの構成では、構成が「オンザフライ」で行われるため、同じアプリケーションの異なるバージョンを使用することもできます。[58] アプリケーションを削除したい場合は、アプリケーションに属するフォルダを削除するだけで済みます。[59] [60]これにより、アプリケーションから独立して、通常はコンピューターの!Boot構造内、!Boot.Choices、または場合によってはネットワークファイルサーバー上の任意の場所に保存されている構成設定が削除されないことがよくあります。プログラムに属するアプリケーションディレクトリをコピーすることにより、RISC OSを実行しているコンピュータ間でインストールされたプログラムをコピーすることができますが、共有ファイルがアプリケーションディレクトリの外にある場合など、一部のプログラムでは再インストールが必要になる場合があります。[58]
  • IBM AIX(Unixバリアント)は、Object Data Manager(ODM)と呼ばれるレジストリーコンポーネントを使用しますODMは、システムとデバイスの構成に関する情報を格納するために使用されます。豊富なツールとユーティリティのセットは、ODMデータベースを拡張、チェック、修正する手段をユーザーに提供します。ODMはその情報をいくつかのファイルに保存します。デフォルトの場所は/ etc / objreposです。
  • GNOMEのデスクトップ環境は、レジストリのようなインターフェースと呼ばれる使用していますdconfをデスクトップやアプリケーションの構成設定を保存するため。
  • エレクトライニシアティブは、様々な異なるテキストの設定ファイル用の代替バックエンドを提供します。
  • オペレーティングシステムではありませんが、WindowsソフトウェアをUnixライクなシステムで実行できるようにするWine 互換性レイヤーは、WindowsライクなレジストリをWINEPREFIXフォルダーのテキストファイルとして使用します:system.reg(HKEY_LOCAL_MACHINE)、user.reg( HKEY_CURRENT_USER)およびuserdef.reg。[61]

も参照してください

注意事項

  1. ^ アプリケーションが必要以上の特権を要求したために実行に失敗した場合(およびそれらの特権が拒否された場合)、これは制限付きユーザーアプリケーション(LUA)のバグとして知られています。

脚注

  1. ^ Esposito、Dino(2000年11月)。「Windows2000レジストリ:最新の機能とAPIは、アプリをカスタマイズおよび拡張するための機能を提供します」MSDNマガジンマイクロソフト。2003年4月15日にオリジナルからアーカイブされまし2007年7月19日取得
  2. ^ bはC 「システムレジストリ」
  3. ^ 「Windows95アーキテクチャコンポーネント」www.microsoft.com2008年2月7日にオリジナルからアーカイブされまし2008年4月29日取得次の表は、レジストリを使用することで克服される.INIファイルの使用によって引き起こされるその他の問題または制限を示しています。
  4. ^ Hipson 2002、p。5、41–43。
  5. ^ リヒター、ジェフリー; ナサール、クリストフ(2008)。Windows Via C / C ++(第5版)。MicrosoftPressISBN 97807356424612021年8月28日取得
  6. ^ Raymond Chen「レジストリキーにデフォルト値があるのはなぜですか?」
  7. ^ Hipson 2002、pp。207、513–514。
  8. ^ Hipson 2002 pp。520–521
  9. ^ Hipson 2002、p。7。
  10. ^ 「WindowsXPアプリケーション仕様用に設計されています」Microsoft2002年8月20日2009年4月8日取得
  11. ^ 「HKEY_LOCAL_MACHINE」ゴータム。2009 2009年4月8日取得
  12. ^ 「WOW64(Windows)の影響を受けるレジストリキー」Msdn.microsoft.com 2014年4月10日取得
  13. ^ 「MicrosoftWindowsレジストリの説明」2008年9月25日取得
  14. ^ 「HKEY_CURRENT_USER」Microsoft2009 2009年4月8日取得
  15. ^ 「Windows95、Windows 98、およびWindows 98SEのHKEY_DYN_DATAレジストリキーの説明」support.microsoft.com
  16. ^ 「HKEY_DYN_DATAの詳細」rinet.ru2008年5月9日にオリジナルからアーカイブされまし
  17. ^ 「レジストリハイブ」2007年7月19日取得
  18. ^ チェン、レイモンド(2011年8月8日)。「レジストリファイルが「ハイブ」と呼ばれるのはなぜですか?」古い新しいもの2011年7月29日取得
  19. ^ 「WindowsNTレジストリの概要」2011年12月2日取得
  20. ^ 「レジストリの内部」2007年12月28日取得
  21. ^ a b Norris、Peter(2009年2月)。「Windowsレジストリの内部構造」(PDF)クランフィールド大学。2009年5月29日にオリジナル(PDF)からアーカイブされまし Cite journal requires |journal= (help)
  22. ^ icoファイルに対して誤ったアイコンが表示される」2009年11月15日2012年3月31日取得
  23. ^ 「サードパーティのソフトウェアを使用せずにWindowsでソフトウェアプログラムを完全にアンインストール/削除する方法は?-AskVG」www.askvg.com
  24. ^ 「ドメインにログオンしようとすると、「STOP0x00000035NO_MORE_IRP_STACK_LOCATIONS」エラーメッセージが表示される場合があります」2011年10月9日2012年3月31日取得 このページは、問題を解決するときにレジストリを編集するようにユーザーに指示します。
  25. ^ 基になるAPIは名前変更機能を直接サポートしていないため、キーの名前変更は、サブキー/値を保持しながら削除および追加として実装されます
  26. ^ a b c d ".regファイルを使用してレジストリのサブキーと値を追加、変更、または削除する方法"support.microsoft.com
  27. ^ 「グループポリシーの適用」マイクロソフト。
  28. ^ a b c Payette、ブルース; シダウェイ、リチャード(2018)。Windows PowerShellの動作(第3版)。マニング出版物pp。7–8、24、608、708–710。ISBN 97816334302972021年8月28日取得
  29. ^ ワーナー、ティモシーL.(2015年5月)。24時間でWindowsPowerShell、Sams TeachYourselfサムス出版NS。 19211ISBN 97801340493592021年8月28日取得
  30. ^ 「VisualBasicを使用したレジストリ値の読み取りと書き込み」2007年7月19日取得
  31. ^ 「WindowsXPのREGコマンド」2007年7月19日取得
  32. ^ 「レジストリマニュアルページ–Tclバンドルパッケージ」www.tcl.tk 2017年12月14日取得
  33. ^ 「オフラインレジストリライブラリ」2014年6月4日取得
  34. ^ 「DllInstall関数」Microsoft2012年3月7日2012年3月22日取得
  35. ^ 「Regsvr32」Microsoft 2012年3月22日取得
  36. ^ 「方法:自動化サーバーを登録する」Microsoft 2012年3月22日取得
  37. ^ 「PowerPoint2000、PowerPoint 2003、PowerPoint 2007、およびPowerPoint2010を再登録する方法」Microsoft2012年1月2012年3月22日取得
  38. ^ 「RegNotifyChangeKeyValue関数」マイクロソフト。
  39. ^ 「通知の登録」マイクロソフト。
  40. ^ 「RegConnectRegistry関数」マイクロソフト。
  41. ^ 「レジストリへのリモートアクセスを管理する方法」マイクロソフト。
  42. ^ ギブソン、ダリル(2011年6月28日)。「第4章:権限によるアクセスの保護」。Microsoft Windowsのセキュリティ:Essentialsインディアナポリス、インディアナ州:ワイリー。ISBN 978-1-118-01684-8
  43. ^ 「アプリケーションの互換性:Windowsリソース保護(WRP)」Microsoft 2012年8月8日取得
  44. ^ マーク・シルビー、ピーター・ブルンドレット。「プロテクトモードInternetExplorerの理解と操作」2012年8月8日取得
  45. ^ 「RegDelNullv1.1」2006年11月1日2012年8月8日取得
  46. ^ 「特定のレジストリキーを削除できません–キーの削除中にエラーが発生しました」2010年3月23日2012年8月8日取得 Microsoftサポートページ。
  47. ^ 「Windowsレジストリチェッカーツール(Scanreg.exe)の説明」
  48. ^ 「レジストリチェッカーツールのコマンドラインスイッチ」
  49. ^ 「WindowsNT4.0でレジストリをバックアップ、編集、および復元する方法」support.microsoft.com
  50. ^ 「レジストリへの技術参照:関連リソース」Microsoft 2011年9月9日取得
  51. ^ 「MicrosoftはWindows10の自動レジストリバックアップを殺します」ExtremeTech 2019年7月1日取得
  52. ^ 「コアグループポリシーのしくみ」Microsoft2009年9月2日2012年8月13日取得
  53. ^ 「第26章–初期化ファイルとレジストリ」Microsoft 2008年3月3日取得
  54. ^ 「Microsoftアプリケーション互換性ツールキット5.0」Microsoft 2008年7月26日取得
  55. ^ a b Ionescu、Mark Russinovich、David A. Solomon、Alex(2012)。「レジストリ内部」。Windowsの内部(第6版)。ワシントン州レドモンド:Microsoft Press ISBN 978-0-7356-4873-9
  56. ^ 「XDGベースディレクトリ仕様」Standards.freedesktop.org
  57. ^ 「アプリケーションディレクトリ」2012年5月27日にオリジナルからアーカイブされまし2012年5月17日取得
  58. ^ B 「トップ132厄介でされているオペレーティングシステム以外のRISC OSのケーススタディ」2012年4月3日取得riscos.comWebサイトのページ。ポイント82および104に記載されています。
  59. ^ 「RISCOSツアー」2007年7月19日取得
  60. ^ 「RISCOS製品ディレクトリ」2006年11月2日。2007年2月19日のオリジナルからアーカイブ2012年4月1日取得
  61. ^ 3.2。レジストリとRegeditの使用(Wineユーザーガイド)

参考文献

外部リンク