レジストリのエントリとデータ

  LboxEnumReg



  
// *********************************************************
// リストボックスにレジストリのエントリとデータの一覧を追加
// 戻り値 : 無し
// *********************************************************
void LboxEnumReg( HWND hList, int nIndex, HKEY hKey )
{
//LONG RegEnumValue(
//HKEY hKey,// キーのハンドル
//DWORD dwIndex,// 値のインデックス
//LPTSTR lpValueName,// 「値の名前」を格納するバッファへのポインタ
//LPDWORD lpcbValueName,// バッファのサイズを入れた変数へのポインタ
//LPDWORD lpReserved,// 0
//LPDWORD lpType,// 値エントリの種類を格納する変数へのポインタ
//LPBYTE lpData,// 「値のデータ」を格納するバッファへのポインタ
//LPDWORD lpcbData// バッファのサイズを入れた変数へのポインタ
//);

	LONG	nRet;
	char	*szEntry;
	char	*szValue;
	char	*szBuffer;

	DWORD	i,j;
	DWORD	nSize1,nSize2;
	DWORD	nSizeEntry;
	DWORD	nSizeValue;
	DWORD	nType;

	int		nInsert;

	nRet = RegQueryInfoKey(
				hKey,
				NULL,
				NULL,
				NULL,
				NULL,
				NULL,
				NULL,
				&i,
				&nSizeEntry,
				&nSizeValue,
				NULL,
				NULL
	);

	nSizeEntry += 12;
	nSizeValue += 12;

	szEntry = new char[nSizeEntry];
	szValue = new char[nSizeValue];
	szBuffer = new char[nSizeEntry+nSizeValue*3];
	i = 0;
	nInsert = nIndex;
	while( 1 ) {
		nSize1 = nSizeEntry;
		nSize2 = nSizeValue;
		nRet = RegEnumValue(
			hKey,
			i,
			szEntry,
			&nSize1,
			0,
			&nType,
			(LPBYTE)szValue,
			&nSize2
		);
		if ( nRet != ERROR_SUCCESS ) {
			break;
		}
		
		switch( nType ) {
			case REG_SZ:
				lstrcpy( szBuffer, szEntry );
				lstrcat( szBuffer, "\tREG_SZ\t" );
				lstrcat( szBuffer, szValue );
				break;
			case REG_EXPAND_SZ:
				lstrcpy( szBuffer, szEntry );
				lstrcat( szBuffer, "\tREG_EXPAND_SZ\t" );
				lstrcat( szBuffer, szValue );
				break;
			case REG_DWORD:
				lstrcpy( szBuffer, szEntry );
				lstrcat( szBuffer, "\tREG_DWORD\t" );
				wsprintf(
					szBuffer+lstrlen(szBuffer),
					"0x%08lX",
					*((DWORD *)szValue)
				);
				break;
			case REG_BINARY:
				lstrcpy( szBuffer, szEntry );
				lstrcat( szBuffer, "\tREG_BINARY\t" );
				for( j = 0; j < nSize2; j++ ) {
					wsprintf(
						szBuffer+lstrlen(szBuffer),
						"%02lx ",
						*(szValue+j) & 0x000000ff
					);
				}
				break;
			default:
				lstrcpy( szBuffer, szEntry );
				lstrcat( szBuffer, "\tREG_?\t" );
				lstrcat( szBuffer, "未実装" );
		}

		LboxListInsert( hList, nInsert, szBuffer );
		nInsert++;
		i++;
	}

	delete [] szValue;
	delete [] szEntry;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ