SHRegEnumUSKey ユーザ指定キーのサブキーを列挙

Cの宣言:

LONG SHRegEnumUSKey(
	HUSKEY hUSKey,
	DWORD Index,
	LPSTR KeyName,
	LPDWORD KeyNameSize,
	SHREGENUM_FLAGS Flags);

説明:

hUSKeyで指定されたユーザ指定キーのサブキーを列挙する。

引数の意味は以下の通り。
hUSKey (IN) ユーザ指定キーのハンドル。
Index (IN) hUSKeyの何番目のサブキーの名前を取得するかを指定するインデックス。
KeyName (OUT) 取得結果のサブキーの名前。
KeyNameSize (IN/OUT) KeyNameのサイズ。関数の実行後、実際にKeyNameに設定されたデータのサイズが返される。
Flags (IN) HKEY_CURRENT_USERとHKEY_LOCAL_MACHINEのどちらのサブキーを列挙するかを指定するフラグ。後述の表を参照。

Flagsには、以下のいずれかのフラグを指定可能。
SHREGENUM_DEFAULT HKEY_CURRENT_USERを列挙する。HKEY_CURRENT_USERにキーがない場合、HKEY_LOCAL_MACHINEを列挙する。
SHREGENUM_HKCU HKEY_CURRENT_USERを列挙する。
SHREGENUM_HKLM HKEY_LOCAL_MACHINEを列挙する。

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

Cのサンプル:

SHRegEnumUSKeyを使用して、HKEY_LOCAL_MACHINEの"Software"というレジストリキーにあるサブキーを列挙し、結果を表示する。
void EnumUSKey(void)
{
	HUSKEY hUSKey;
	LONG lResult;
	DWORD Index;
	char KeyName[1000];
	DWORD KeyNameSize;

	/* "Software"というレジストリキーをオープン */
	SHRegOpenUSKey(
		"Software\\",
		KEY_ALL_ACCESS,
		NULL,
		&hUSKey,
		TRUE);

	/* サブキーを列挙 */
	for(Index = 0;; Index++) {
		KeyNameSize = 1000;

		/* サブキーを取得 */
		lResult = SHRegEnumUSKey(
			hUSKey,
			Index,
			KeyName,
			&KeyNameSize,
			SHREGENUM_HKCU);

		if(lResult != ERROR_SUCCESS) break;
		
		/* 取得結果を表示 */
		printf("%s\n", KeyName);
	}

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

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