/////////////////////////////////////////////////////////////// // enumerate.cpp - traversing registry and displaying // // ver 1.0 keys and values // // // // Jim Fawcett, CST 2-187, Syracuse Univ // // fawcett@ecs.syr.edu, (315) 443-3948 // // // // Modified from Win32 System Services, Marshall Brain, // // Prentice Hall, 1996 // /////////////////////////////////////////////////////////////// // Note: // // View result with regedit.exe (don't modify anything!) // // // /////////////////////////////////////////////////////////////// #include #include void main() { LONG ret; HKEY keyHandle; CHAR subKeyName[80]; DWORD subKeyNameSize; CHAR valueName[80]; DWORD valueNameSize; BYTE value[80]; DWORD valueSize; DWORD n; FILETIME lastUpdate; cout << "\n Demonstrating Traversal of the Registry Tree " << "\n ==============================================\n"; // open key to enumerate ret=RegOpenKeyEx( HKEY_CURRENT_USER, "Control Panel", 0, KEY_ENUMERATE_SUB_KEYS, &keyHandle ); if (ret != ERROR_SUCCESS) { cerr << "\n Unable to open subkey\n\n"; return; } // cout << "\nsubkeys of \"Control Panel\":\n"; // show all subkeys n=0; do { subKeyNameSize=80; ret=RegEnumKeyEx( keyHandle, n, subKeyName, &subKeyNameSize, NULL, NULL, NULL, &lastUpdate ); if (ret == ERROR_SUCCESS) { cout << "\n " << subKeyName; n++; } } while (ret == ERROR_SUCCESS); cout << "\n\nThere are " << n << " keys listed." << endl; // close key ret=RegCloseKey(keyHandle); if (ret != ERROR_SUCCESS) { cerr << "\n Unable to close subkey\n\n"; return; } // // open a specific subkey to enumerate ret=RegOpenKeyEx( HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, KEY_QUERY_VALUE, &keyHandle ); if (ret != ERROR_SUCCESS) { cerr << "\n Unable to open subkey\n\n"; return; } cout << "\nvalues of subkeys under \"Control Panel\\Desktop\":\n"; // show all values n=0; do { valueNameSize=80; valueSize=80; ret=RegEnumValue( keyHandle, n, valueName, &valueNameSize, NULL, NULL, value, &valueSize ); if (ret == ERROR_SUCCESS) { cout << "\n " << valueName << " is " << value; n++; } } while (ret == ERROR_SUCCESS); cout << "\n\nThere are " << n << " key-value pairs listed.\n\n"; // close key ret=RegCloseKey(keyHandle); if (ret != ERROR_SUCCESS) { cerr << "Unable to close subkey\n\n"; return; } }