レジストリ関数

レジストリを使用する場合

Windows レジストリは、少量の構成データ (設定、基本設定、ユーザーごとの状態) を格納するのに適しています。 他のシナリオの代替手段を検討してください。

シナリオ レコメンデーション
アプリケーション設定 (最新のアプリ) デスクトップ アプリの場合 は、ApplicationData.LocalSettings (UWP/WinUI) または %APPDATA% の JSON/XML ファイルを優先します。 これらは、バックアップ、移行、デバッグが簡単です。
大きなデータまたは構造化データ レジストリ値に大きな BLOB を格納するのではなく、ファイル (JSON、SQLite など) を使用します。
マシン全体のサービス構成 HKEY_LOCAL_MACHINEのレジストリが適切です。これは、Windows サービスの標準的なメカニズムです。
ユーザーごとの基本設定 (デスクトップ アプリ) HKEY_CURRENT_USER\Software\<Company>\<App>下のレジストリは、適切で従来の方法です。
プロセス間の共有状態 名前付き共有メモリ、名前付きパイプ、またはファイルを検討してください。レジストリには値の読み取りに変更通知が組み込まれています。 RegNotifyChangeKeyValue は、粒度の粗い通知にのみ使用します。

Important

セキュリティのベスト プラクティス: 必要最小限のアクセス権 ( KEY_READ や KEY_WRITEなど) でレジストリ キーを開きます。 KEY_ALL_ACCESS や MAXIMUM_ALLOWEDの使用は避けてください。 管理者特権 (管理者) プロセスからのみ HKEY_LOCAL_MACHINE に書き込みます。 レジストリ関数からの戻り値を常に確認します。成功すると ERROR_SUCCESS が返され、失敗した場合は Win32 エラー コードが返されます (HRESULT ではありません)。

Note

一般的な落とし穴 — 文字列型: レジストリ文字列値 (REG_SZ、 REG_EXPAND_SZ) は、 RegSetValueExに渡されるバイト数に null ターミネータを含める必要があります。 RegQueryValueExまたはRegGetValueを使用して文字列を読み取る場合、格納されている値にターミネータが含まれていない可能性がある場合は、常にバッファーを自分で null 終了します。一部のサード パーティ製ソフトウェアでは、文字列が書き込まれません。

レジストリ関数を次に示します。

機能 形容
GetSystemRegistryQuotaの レジストリの現在のサイズと、レジストリがシステムで取得できる最大サイズを取得します。
RegCloseKey 指定したレジストリ キーへのハンドルを閉じます。
RegConnectRegistry 別のコンピューターで定義済みのレジストリ ハンドルへの接続を確立します。
RegCopyTree 指定したレジストリ キーとその値とサブキーを、指定した宛先キーにコピーします。
RegCreateKeyExの 指定したレジストリ キーを作成します。
RegCreateKeyTransactedをする 指定したレジストリ キーを作成し、トランザクションに関連付けます。
RegDeleteKey サブキーとその値を削除します。
RegDeleteKeyExの レジストリの指定したプラットフォーム固有のビューからサブキーとその値を削除します。
RegDeleteKeyTransactedの トランザクション操作として、レジストリの指定したプラットフォーム固有のビューからサブキーとその値を削除します。
RegDeleteKeyValueの 指定したレジストリ キーとサブキーから、指定した値を削除します。
RegDeleteTreeをする 指定したキーのサブキーと値を再帰的に削除します。
RegDeleteValueをする 指定したレジストリ キーから名前付き値を削除します。
RegDisablePredefinedCacheをする 現在のプロセスの HKEY_CURRENT_USER の定義済みレジストリ ハンドルのハンドル キャッシュを無効にします。
RegDisablePredefinedCacheExの 現在のプロセスのすべての定義済みレジストリ ハンドルのハンドル キャッシュを無効にします。
RegDisableReflectionKeyの 指定したキーのレジストリ リフレクションを無効にします。
RegEnableReflectionKey 指定した無効なキーのレジストリ リフレクションを有効にします。
RegEnumKeyExの 指定した開いているレジストリ キーのサブキーを列挙します。
RegEnumValueをする 指定した開いているレジストリ キーの値を列挙します。
RegFlushKeyをする 指定した開いているレジストリ キーのすべての属性をレジストリに書き込みます。
RegGetKeySecurityの 指定した開いているレジストリ キーを保護するセキュリティ記述子のコピーを取得します。
RegGetValue 指定したレジストリ値の型とデータを取得します。
RegLoadKey HKEY_USERS または HKEY_LOCAL_MACHINE の下にサブキーを作成し、指定したファイルからそのサブキーに登録情報を格納します。
RegLoadMUIStringの 指定したキーとサブキーから指定した文字列を読み込みます。
RegNotifyChangeKeyValueをする 指定したレジストリ キーの属性または内容の変更について呼び出し元に通知します。
RegOpenCurrentUser 現在のスレッドが偽装しているユーザーの HKEY_CURRENT_USER キーへのハンドルを取得します。
RegOpenKeyExをする 指定したレジストリ キーを開きます。
RegOpenKeyTransacted 指定したレジストリ キーを開き、トランザクションに関連付けます。
RegOpenUserClassesRoot 指定したユーザーの HKEY_CLASSES_ROOT キーへのハンドルを取得します。
RegOverridePredefKey 定義済みのレジストリ キーを、指定したレジストリ キーにマップします。
RegQueryInfoKeyの 指定したレジストリ キーに関する情報を取得します。
RegQueryMultipleValues 開いているレジストリ キーに関連付けられている値の名前の一覧の型とデータを取得します。
RegQueryReflectionKeyをする 指定したキーに対してリフレクションが無効になっているか、有効になっているかを判断します。
RegQueryValueExの 開いているレジストリ キーに関連付けられている指定した値の名前の型とデータを取得します。
RegRenameKey 指定したレジストリ キーの名前を変更します。
RegReplaceKeyをする レジストリ キーとそのすべてのサブキーをバックアップするファイルを別のファイルに置き換えます。
RegRestoreKeyをする 指定したファイル内のレジストリ情報を読み取り、指定したキーにコピーします。
RegSaveKey 指定したキーとそのすべてのサブキーと値を新しいファイルに保存します。
RegSaveKeyExをする 指定したキーとそのすべてのサブキーと値を新しいファイルに保存します。 保存されたキーまたはハイブの形式を指定できます。
RegSetKeyValueの 指定したレジストリ キーとサブキーの指定した値のデータを設定します。
RegSetKeySecurityの 開いているレジストリ キーのセキュリティを設定します。
RegSetValueExの レジストリ キーの指定した値のデータと型を設定します。
RegUnLoadKey 指定したレジストリ キーとそのサブキーをレジストリからアンロードします。

 

レジストリでは、次のシェル関数を使用できます。

初期化ファイル関数を次に示します。 システム定義またはアプリケーション定義の初期化ファイルから情報を取得し、情報をコピーします。 これらの関数は、16 ビット バージョンの Windows との互換性のためにのみ提供されます。 新しいアプリケーションでは、レジストリを使用する必要があります。

機能 形容
GetPrivateProfileIntをする 初期化ファイルの指定したセクションのキーに関連付けられている整数を取得します。
GetPrivateProfileSectionをする 初期化ファイルの指定したセクションのすべてのキーと値を取得します。
GetPrivateProfileSectionNamesをする 初期化ファイル内のすべてのセクションの名前を取得します。
GetPrivateProfileStringの 初期化ファイル内の指定したセクションから文字列を取得します。
GetPrivateProfileStructの 初期化ファイルの指定したセクションのキーに関連付けられているデータを取得します。
GetProfileIntの Win.ini ファイルの指定したセクションのキーから整数を取得します。
GetProfileSectionの Win.ini ファイルの指定したセクションのすべてのキーと値を取得します。
GetProfileStringの Win.ini ファイルの指定したセクションのキーに関連付けられている文字列を取得します。
WritePrivateProfileSectionの 初期化ファイル内の指定したセクションのキーと値を置き換えます。
WritePrivateProfileStringの 初期化ファイルの指定したセクションに文字列をコピーします。
WritePrivateProfileStructの 初期化ファイルの指定したセクションのキーにデータをコピーします。
WriteProfileSectionの Win.ini ファイル内の指定したセクションの内容を、指定したキーと値に置き換えます。
WriteProfileStringの Win.ini ファイルの指定したセクションに文字列をコピーします。

 

廃止された関数

これらの関数は、16 ビット バージョンの Windows との互換性のためにのみ提供されます。