レジストリ キーのセキュリティとアクセス権

Windows セキュリティ モデルを使用すると、レジストリ キーへのアクセスを制御できます。 セキュリティの詳細については、「 アクセス制御モデル」を参照してください。

レジストリ キーの セキュリティ記述子 は、 RegCreateKeyEx または RegSetKeySecurity 関数を呼び出すときに指定できます。 NULL を指定すると、キーは既定のセキュリティ記述子を取得します。 キーの既定のセキュリティ記述子の ACL は、その直接の親キーから継承されます。

レジストリ キーのセキュリティ記述子を取得するには、 RegGetKeySecurityGetNamedSecurityInfo、または GetSecurityInfo 関数を 呼び出します。

レジストリ キーの有効なアクセス権には、DELETE、READ_CONTROL、WRITE_DAC、標準 アクセス権WRITE_OWNER含まれます。 レジストリ キーは、SYNCHRONIZE 標準アクセス権をサポートしていません。

次の表に、レジストリ キー オブジェクトの特定のアクセス権を示します。

説明
KEY_ALL_ACCESS (0xF003F)
STANDARD_RIGHTS_REQUIRED、KEY_QUERY_VALUE、KEY_SET_VALUE、KEY_CREATE_SUB_KEY、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY、KEY_CREATE_LINKアクセス権を組み合わせます。
KEY_CREATE_LINK (0x0020)
システムで使用するために予約されています。
KEY_CREATE_SUB_KEY (0x0004)
レジストリ キーのサブキーを作成するために必要です。
KEY_ENUMERATE_SUB_KEYS (0x0008)
レジストリ キーのサブキーを列挙するために必要です。
KEY_EXECUTE (0x20019)
KEY_READに相当します。
KEY_NOTIFY (0x0010)
レジストリ キーまたはレジストリ キーのサブキーの変更通知を要求するために必要です。
KEY_QUERY_VALUE (0x0001)
レジストリ キーの値を照会するために必要です。
KEY_READ (0x20019)
STANDARD_RIGHTS_READ、KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFYの値を結合します。
KEY_SET_VALUE (0x0002)
レジストリ値を作成、削除、または設定するために必要です。
KEY_WOW64_32KEY (0x0200)
64 ビット Windows 上のアプリケーションが 32 ビット レジストリ ビューで動作することを示します。 このフラグは、32 ビット Windows では無視されます。 詳細については、「 代替レジストリ ビューへのアクセス」を参照してください。
このフラグは、OR 演算子を使用して、このテーブル内のレジストリ値を照会またはアクセスする他のフラグと組み合わせる必要があります。
Windows 2000: このフラグはサポートされていません。
KEY_WOW64_64KEY (0x0100)
64 ビット Windows 上のアプリケーションが 64 ビット レジストリ ビューで動作することを示します。 このフラグは、32 ビット Windows では無視されます。 詳細については、「 代替レジストリ ビューへのアクセス」を参照してください。
このフラグは、OR 演算子を使用して、このテーブル内のレジストリ値を照会またはアクセスする他のフラグと組み合わせる必要があります。
Windows 2000: このフラグはサポートされていません。
KEY_WRITE (0x20006)
STANDARD_RIGHTS_WRITE、KEY_SET_VALUE、KEY_CREATE_SUB_KEYアクセス権を組み合わせます。

RegOpenKeyEx 関数を呼び出すと、要求されたアクセス権がキーのセキュリティ記述子に対してチェックされます。 ユーザーがレジストリ キーへの正しいアクセス権を持っていない場合、開いている操作は失敗します。 管理者がキーにアクセスする必要がある場合の解決策は、SE_TAKE_OWNERSHIP_NAME特権を有効にし、WRITE_OWNER アクセス権を持つレジストリ キーを開く方法です。 詳細については、「 特権の有効化と無効化」を参照してください。

キーのシステム アクセス制御リスト (SACL) の読み取りまたは書き込みを行う場合は、レジストリ キーへのACCESS_SYSTEM_SECURITYアクセス権を要求できます。 詳細については、 アクセス制御リスト (ACL)SACL アクセス権に関するページを参照してください

定義済みのキーを含むキーの現在のアクセス権を表示するには、レジストリ エディター (Regedt32.exe) を使用します。 目的のキーに移動したら、[ 編集] メニューに移動し、[ アクセス許可] を選択します。