SHRegQueryUSValue ユーザ指定キーのレジストリ値を取得

Cの宣言:

LONG SHRegQueryUSValue(
	HUSKEY hUSKey,
	LPCSTR ValueName,
	LPDWORD ValueType,
	LPVOID Value,
	LPDWORD ValueSize,
	BOOL fIgnoreHKCU,
	LPVOID DefaultValue,
	DefaultValueSize);

説明:

hUSKeyで指定されたユーザ指定キーにあるValueNameで指定した名前のレジストリ値を取得する。

fIgnoreHKCUがTRUEの場合、HKEY_LOCAL_MACHINEからレジストリ値を取得する。fIgnoreHKCUがFALSEの場合、HKEY_CURRENT_USERからレジストリ値を取得する。fIgnoreHKCUがFALSEでHKEY_CURRENT_USERにValueNameで指定したレジストリ値が存在しない場合、HKEY_LOCAL_MACHINEからレジストリ値を取得する。

ValueNameで指定したレジストリ値が存在しない場合、DefaultValueで指定した値が返される。

引数の意味は以下の通り。
hUSKey (IN) ユーザ指定キーのハンドル。
ValueName (IN) 取得するレジストリ値の名前。
ValueType (OUT) レジストリ値のタイプ。
Value (OUT) 取得結果のレジストリ値。
ValueSize (IN/OUT) Valueのサイズ。関数の実行後、実際にValueに設定されたデータのサイズが返される。
fIgnoreHKCU (IN) HKEY_CURRENT_USERとHKEY_LOCAL_MACHINEのどちらからレジストリ値を取得するかを指定する真偽値。
DefaultValue (IN) デフォルトのレジストリ値。
DefaultValueSize (IN) DefaultValueのサイズ。

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

Cのサンプル:

HKEY_LOCAL_MACHINEの"Software\masapico"というレジストリキーにある"hello"という名前のレジストリ値を取得し、結果を表示する。"hello"という名前のレジストリ値がない場合、"abc"という値をデフォルトのレジストリ値として返却する。
void QueryUSValue(void)
{
	HUSKEY hUSKey;
	char Value[1000];
	DWORD ValueSize;
	char *DefaultValue = "abc";

	/* “Sotware\masapico”キーをユーザ指定キーとしてオープンする */
	SHRegOpenUSKey(
		"Software\\masapico",
		KEY_ALL_ACCESS,
		NULL,
		&hUSKey,
		TRUE);

	ValueSize = 1000;

	/* "hello"というレジストリ値の取得 */
	SHRegQueryUSValue(
		hUSKey,
		"hello",
		NULL,
		Value,
		&ValueSize,
		TRUE,
		DefaultValue,
		lstrlen(DefaultValue) + 1);

	/* 結果の表示 */
	printf("%s\n", Value);

	/* 終了 */
	SHRegCloseUSKey(hUSKey);
}
(original text:1999/09/05 更新)

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