/*++ Copyright (c) 1997 Microsoft Corporation Module Name: hkcrtool.c Abstract: Implements a stub tool that is designed to run with NT-side upgrade code. Author: () Revision History: --*/ #include "pch.h" BOOL Init ( VOID ) { HINSTANCE hInstance; DWORD dwReason; PVOID lpReserved; // // Simulate DllMain // hInstance = GetModuleHandle (NULL); dwReason = DLL_PROCESS_ATTACH; lpReserved = NULL; // // Initialize DLL globals // if (!FirstInitRoutine (hInstance)) { return FALSE; } // // Initialize all libraries // if (!InitLibs (hInstance, dwReason, lpReserved)) { return FALSE; } // // Final initialization // if (!FinalInitRoutine ()) { return FALSE; } return TRUE; } VOID Terminate ( VOID ) { HINSTANCE hInstance; DWORD dwReason; PVOID lpReserved; // // Simulate DllMain // hInstance = GetModuleHandle (NULL); dwReason = DLL_PROCESS_DETACH; lpReserved = NULL; // // Call the cleanup routine that requires library APIs // FirstCleanupRoutine(); // // Clean up all libraries // TerminateLibs (hInstance, dwReason, lpReserved); // // Do any remaining clean up // FinalCleanupRoutine(); } INT __cdecl wmain ( INT argc, WCHAR *argv[] ) { REGKEY_ENUM e1, e; HKEY Key; BOOL b; PCTSTR Data; TCHAR KeyName[MAX_REGISTRY_KEY]; if (!Init()) { wprintf (L"Unable to initialize!\n"); return 255; } if (1) { _tprintf (TEXT("Keys in CLSID that are in TypeLib too:\n\n")); if (EnumFirstRegKeyStr (&e1, TEXT("HKLM\\Software\\Classes\\CLSID"))) { do { wsprintf (KeyName, TEXT("HKLM\\Software\\Classes\\TypeLib\\%s"), e1.SubKeyName); Key = OpenRegKeyStr (KeyName); if (Key) { _tprintf (TEXT("%s\n"), e1.SubKeyName); CloseRegKey (Key); } } while (EnumNextRegKey (&e1)); } } else if (0) { _tprintf (TEXT("Overwritable GUIDs:\n\n")); if (EnumFirstRegKeyStr (&e1, TEXT("HKLM\\Software\\Classes\\CLSID"))) { do { Key = OpenRegKey (e1.KeyHandle, e1.SubKeyName); b = TRUE; if (EnumFirstRegKey (&e, Key)) { do { if (StringIMatchCharCount (e.SubKeyName, TEXT("Inproc"), 6) || StringIMatch (e.SubKeyName, TEXT("LocalServer")) || StringIMatch (e.SubKeyName, TEXT("LocalServer32")) || StringIMatch (e.SubKeyName, TEXT("ProxyStubClsid32")) ) { b = FALSE; break; } } while (EnumNextRegKey (&e)); } if (b) { Data = (PCTSTR) GetRegKeyData (e1.KeyHandle, e1.SubKeyName); if (Data && *Data) { _tprintf (TEXT(" %s\n"), Data); MemFree (g_hHeap, 0, Data); } else { _tprintf (TEXT(" GUID: %s\n"), e1.SubKeyName); } if (EnumFirstRegKey (&e, Key)) { do { _tprintf (TEXT(" %s\n"), e.SubKeyName); } while (EnumNextRegKey (&e)); } } CloseRegKey (Key); } while (EnumNextRegKey (&e1)); } } Terminate(); return 0; }