WIn32API レジストリエントリのデータとデータ型を取得する RegQueryValueEx
レジストリエントリのデータとデータ型を取得するには、 RegQueryValueEx関数を用いる
RegQueryValueEx関数のプロトタイプは以下のとおり
LONG RegQueryValueEx( HKEY hKey, // キーのハンドル LPCTSTR lpValueName, // レジストリエントリ名 LPDWORD lpReserved, // 予約済み LPDWORD lpType, // データ型が格納されるバッファ LPBYTE lpData, // データが格納されるバッファ LPDWORD lpcbData // データバッファのサイズ );
#include <windows.h> #include <stdio.h> int main() { HKEY hKey; DWORD dwType; TCHAR lpData[256]; DWORD dwDataSize; LONG lRet; lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Internet Explorer"), NULL, KEY_QUERY_VALUE, &hKey); if (lRet != ERROR_SUCCESS) { fprintf(stderr, "RegOpenKeyEx error\n"); return 1; } dwDataSize = sizeof(lpData)/sizeof(lpData[0]); lRet = RegQueryValueEx( hKey, TEXT("Version"), 0, &dwType, (LPBYTE)lpData, &dwDataSize); if (lRet != ERROR_SUCCESS) { RegCloseKey(hKey); fprintf(stderr, "RegQueryValueEx error\n"); return 1; } _tprintf(TEXT("%s\n"), lpData); switch (dwType) { case REG_NONE: // No value type _tprintf(TEXT("REG_NONE\n")); break; case REG_SZ: // Unicode nul terminated string _tprintf(TEXT("REG_SZ\n")); break; case REG_EXPAND_SZ: // Unicode nul terminated string (with environment variable references) _tprintf(TEXT("REG_EXPAND_SZ\n")); break; case REG_BINARY: // Free form binary _tprintf(TEXT("REG_BINARY\n")); break; case REG_DWORD_LITTLE_ENDIAN: // 32-bit number _tprintf(TEXT("REG_DWORD_LITTLE_ENDIAN\n")); break; case REG_DWORD_BIG_ENDIAN: // 32-bit number _tprintf(TEXT("REG_DWORD_BIG_ENDIAN\n")); break; case REG_LINK: // Symbolic Link (unicode) _tprintf(TEXT("REG_LINK\n")); break; case REG_MULTI_SZ: // Multiple Unicode strings _tprintf(TEXT("REG_MULTI_SZ\n")); break; case REG_RESOURCE_LIST: // Resource list in the resource map _tprintf(TEXT("REG_RESOURCE_LIST\n")); break; case REG_FULL_RESOURCE_DESCRIPTOR: // Resource list in the hardware description _tprintf(TEXT("REG_FULL_RESOURCE_DESCRIPTOR\n")); break; case REG_RESOURCE_REQUIREMENTS_LIST: _tprintf(TEXT("REG_RESOURCE_REQUIREMENTS_LIST\n")); break; case REG_QWORD: // 64-bit number _tprintf(TEXT("REG_QWORD\n")); break; default: _tprintf(TEXT("Unknown\n")); break; } RegCloseKey(hKey); return 0; }
9.0.8112.16421 REG_SZ
http://msdn.microsoft.com/ja-jp/library/cc429931.aspx