Share via


RegSetValueExW 関数 (winreg.h)

レジストリ キーの下にある指定した値のデータと型を設定します。

構文

LSTATUS RegSetValueExW(
  [in]           HKEY       hKey,
  [in, optional] LPCWSTR    lpValueName,
                 DWORD      Reserved,
  [in]           DWORD      dwType,
  [in]           const BYTE *lpData,
  [in]           DWORD      cbData
);

パラメーター

[in] hKey

開いているレジストリ キーへのハンドル。 キーは、KEY_SET_VALUEアクセス権で開かれている必要があります。 詳細については、「 レジストリ キーのセキュリティとアクセス権」を参照してください。

このハンドルは、 RegCreateKeyExRegCreateKeyTransactedRegOpenKeyEx、または RegOpenKeyTransacted 関数によって返されます。 また、次のいずれかの 定義済みキーを指定することもできます。

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
この関数の Unicode バージョンでは、次の追加の定義済みキーがサポートされています。
  • HKEY_PERFORMANCE_TEXT
  • HKEY_PERFORMANCE_NLSTEXT

[in, optional] lpValueName

設定する値の名前。 この名前の値がまだキーに存在しない場合、関数によってキーに追加されます。

lpValueNameNULL または空の文字列 "" の場合、関数はキーの名前なしまたは既定値の型とデータを設定します。

詳細については、「 レジストリ要素のサイズ制限」を参照してください。

レジストリ キーには既定値はありませんが、任意の型の名前のない値を 1 つ持つことができます。

Reserved

このパラメーターは予約されており、0 である必要があります。

[in] dwType

lpData パラメーターによって指されるデータの型。 使用できる型の一覧については、「 レジストリ値の型」を参照してください。

[in] lpData

格納するデータ。

REG_SZなどの文字列ベースの型の場合、文字列は null で終わる必要があります。 REG_MULTI_SZデータ型では、文字列を 2 つの null 文字で終了する必要があります。

null 値が有効であることを示す lpData に注意してください。ただし、この場合は、cbData を '0' に設定する必要があります。
 

[in] cbData

lpData パラメーターが指す情報のサイズ (バイト単位)。 データの種類がREG_SZ、REG_EXPAND_SZ、またはREG_MULTI_SZの場合、 cbData には終端の null 文字または文字のサイズを含める必要があります。

戻り値

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

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

解説

値のサイズは、使用可能なメモリによって制限されます。 ただし、レジストリに大きな値を格納すると、そのパフォーマンスに影響を与える可能性があります。 長い値 (2,048 バイトを超える) は、レジストリに格納されているファイルの場所と共にファイルとして格納する必要があります。

アイコン、ビットマップ、実行可能ファイルなどのアプリケーション要素は、ファイルとして格納し、レジストリに配置しないでください。

dwType がREG_SZ、REG_MULTI_SZ、またはREG_EXPAND_SZ型であり、この関数の ANSI バージョンが使用されている場合 (RegSetValueExA を明示的に呼び出すか、Windows.h ファイルを含める前に UNICODE を定義しない場合)、lpData パラメーターが指すデータは ANSI 文字列である必要があります。 文字列は、レジストリに格納される前に Unicode に変換されます。

特定のレジストリ キーにアクセスする操作はリダイレクトされることに注意してください。 詳細については、「 レジストリの仮想化 」および「レジストリ内 の 32 ビットおよび 64 ビットアプリケーション データ」を参照してください。

レジストリ キーの値を設定するより便利な方法を提供する RegSetKeyValue 関数の使用を検討してください。

注意

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

要件

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

関連項目

RegSetKeyValue

RegCreateKeyEx

RegFlushKey

RegOpenKeyEx

RegQueryValueEx

レジストリ関数

レジストリの概要