SHRegSetUSValue ユーザ指定キーのレジストリ値を設定

Cの宣言:

LONG SHRegSetUSValue(
	LPCSTR SubKeyName,
	LPCSTR ValueName,
	DWORD ValueType,
	LPVOID Value,
	DWORD ValueSize,
	DWORD Flags);

説明:

SubKeyNameで指定したユーザ指定キーにレジストリ値を追加する。

引数の意味は以下の通り。
SubKeyName ユーザ指定キーの名前。
ValueName 設定するレジストリ値の名前。
ValueType 設定するレジストリ値のタイプ。REG_SZでなければならない。
Value 設定するレジストリ値。NULLで終わる文字列でなければならない。
ValueSize 設定するレジストリ値のサイズ。終端のNULLを含まない文字列のバイト長でなければならない。
Flags HKEY_CURRENT_USERとHKEY_LOCAL_MACHINEのどちらに設定するかを表すフラグ。後述の表を参照。

Flgasには以下のフラグの組み合わせを指定可能である。
SHREGSET_HKCU HKEY_CURRENT_USERにレジストリ値を設定する。
SHREGSET_HKLM HKEY_LOCAL_MACHINEにレジストリ値を設定する。
SHREGSET_DEFAULT HKEY_CURRENT_USERおよびHKEY_LOCAL_MACHINEの両方にレジストリ値を設定する。

戻り値は、関数の実行結果を表すエラーコードである。

Cのサンプル:

SHRegSetUSValueを使用して、HKEY_CURRENT_USERおよびHKEY_LOCAL_MACHINEのそれぞれにある"Software\masapico"というサブキーに"hello"という名前のレジストリ値を作成する。また、HKEY_LOCAL_MACHINEにある"Software\masapico"というサブキーに"foo"という名前のレジストリ値を作成する。
void SetUSValue(void)
{
	char *RegValue1 = "world";
	char *RegValue2 = "bar";

	/* HKEY_CURRENT_USERおよびHKEY_LOCAL_MACHINEのSoftware\\masapicoというサブキーに、
	   値が文字列"world"で、名前が"hello"である新規レジストリ値を作成する */
	SHRegSetUSValue(
		"Software\\masapico",
		"hello",
		REG_SZ,
		RegValue1,
		lstrlen(RegValue1) + 1,
		SHREGSET_DEFAULT);

	/* HKEY_LOCAL_MACHINEのSoftware\\masapicoというサブキーに、
	   値が文字列"bar"で、名前が"foo"である新規レジストリ値を作成する */
	SHRegSetUSValue(
		"Software\\masapico",
		"foo",
		REG_SZ,
		RegValue2,
		lstrlen(RegValue2) + 1,
		SHREGSET_HKLM);
}

(original text:1999/09/05 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。