RegSaveKeyExA 関数 (winreg.h)

指定したキーとそのすべてのサブキーと値を、指定した形式でレジストリ ファイルに保存します。

システム ファイルやレジストリ ハイブを含むシステム状態をバックアップまたは復元するアプリケーションでは、レジストリ関数の代わりに ボリューム シャドウ コピー サービス を使用する必要があります。

構文

LSTATUS RegSaveKeyExA(
  [in]           HKEY                        hKey,
  [in]           LPCSTR                      lpFile,
  [in, optional] const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in]           DWORD                       Flags
);

パラメーター

[in] hKey

開いているレジストリ キーへのハンドル。

この関数は、定義済みの キー HKEY_CLASSES_ROOT サポートしていません。

[in] lpFile

指定したキーとサブキーを保存するファイルの名前。 ファイルが既に存在する場合、関数は失敗します。

新しいファイルにはアーカイブ属性があります。

文字列にパスが含まれていない場合、ファイルはローカル キーの呼び出し元プロセスの現在のディレクトリ、またはリモート キーの %systemroot%\system32 ディレクトリに作成されます。

[in, optional] lpSecurityAttributes

新しいファイルのセキュリティ記述子を指定する SECURITY_ATTRIBUTES 構造体へのポインター。 lpSecurityAttributesNULL の場合、ファイルは既定のセキュリティ記述子を取得します。 ファイルの既定のセキュリティ記述子の ACL は、その親ディレクトリから継承されます。

[in] Flags

保存されたキーまたはハイブの形式。 このパラメーターには、次の値のいずれかを指定できます。

意味
REG_STANDARD_FORMAT
1
キーまたはハイブは標準形式で保存されます。 標準形式は、Windows 2000 でサポートされている唯一の形式です。
REG_LATEST_FORMAT
2
キーまたはハイブは最新の形式で保存されます。 最新の形式は、Windows XP 以降でサポートされています。 キーまたはハイブをこの形式で保存した後は、以前のシステムに読み込むことができません。
REG_NO_COMPRESSION
4
ハイブは圧縮なしで保存され、保存操作を高速化します。 hKey パラメーターは、HKEY_LOCAL_MACHINEまたはHKEY_USERSでハイブのルート指定する必要があります。 たとえば、 HKLM\SOFTWARE はハイブのルートです。

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS です。

関数が失敗した場合、戻り値は Winerror.h で定義されている 0 以外のエラー コードです。 FORMAT_MESSAGE_FROM_SYSTEM フラグを指定して FormatMessage 関数を使用すると、エラーの一般的な説明を取得できます。

この関数の 1 回の呼び出しで、上記の Flags パラメーターに指定できる値が複数指定されている場合 (たとえば、2 つ以上の値が OR'ed の場合)、または REG_NO_COMPRESSIONが指定され、 hKey がハイブのルートではないキーを指定した場合、この関数はERROR_INVALID_PARAMETERを返します。

注釈

RegSaveKey とは異なり、この関数は定義済みのキー HKEY_CLASSES_ROOTサポートしていません。

hKey がリモート コンピューター上のキーを表す場合、lpFile によって記述されるパスはリモート コンピューターに対する相対パスです。

RegSaveKeyEx 関数は、不揮発性キーのみを保存します。 揮発性キーは保存されません。 キーは、作成時に揮発性または不揮発性になります。 RegCreateKeyEx を参照してください。

RegSaveKeyEx によって作成されたファイルは、RegLoadKey、RegReplaceKey、または RegRestoreKey 関数の後続の呼び出しで使用できます。 RegSaveKeyEx が操作の途中で失敗した場合、ファイルは破損し、そのファイルの RegLoadKeyRegReplaceKey、または RegRestoreKey の後続の呼び出しは失敗します。

RegSaveKeyExRegRestoreKey と共に使用してレジストリ内のサブツリーをコピーすることはお勧めしません。 このメソッドは通知をトリガーせず、他のアプリケーションで使用されるハンドルを無効にすることができます。 代わりに、 SHCopyKey 関数または RegCopyTree 関数を使用します。

呼び出し元プロセスでは、SE_BACKUP_NAME特権が有効になっている必要があります。 詳細については、「特別な特権を使用して実行する」を参照してください。

注意

winreg.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RegSaveKeyEx を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー winreg.h (Windows.h を含む)
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

RegCreateKeyEx

RegDeleteKey

RegLoadKey

RegReplaceKey

RegRestoreKey

RegSaveKey

レジストリ ファイル

レジストリ関数

SECURITY_ATTRIBUTES