#include #include #include #pragma comment (lib, "offreg.lib") #define MAX_KEY_NAME 255 //longest key name #define MAX_VALUE_NAME 16383 //longest value name #define MAX_DATA 1024000 //longest data amount int EnumerateKeys(ORHKEY OffKey, LPWSTR szKeyName) { DWORD nSubkeys; DWORD nValues; DWORD nSize; DWORD dwType; DWORD cbData; ORHKEY OffKeyNext; WCHAR szValue[MAX_VALUE_NAME]; WCHAR szSubKey[MAX_KEY_NAME]; WCHAR szNextKey[MAX_KEY_NAME]; int i; // get the number of keys and values if (ORQueryInfoKey(OffKey, NULL, NULL, &nSubkeys, NULL, NULL, &nValues, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) { return 0; } printf("%ws\n", szKeyName); // loop for each of the values for(i=0; i