/*++ Copyright (c) Microsoft Corporation. All rights reserved. Module Name: Registry.h Abstract: Class definition for the registry API wrapper class. Notes: ANSI & Unicode via TCHAR - runs on Win9x/NT/2K/XP etc. History: 01/29/2001 rparsons Created 03/02/2001 rparsons Major overhaul 01/27/2002 rparsons Converted to TCHAR --*/ #ifndef _CREGISTRY_H #define _CREGISTRY_H #include #include #include #define REG_FORCE_RESTORE (0x00000008L) // // Macro that returns TRUE if the given registry handle is predefined. // #define IsPredefinedRegistryHandle(h) \ (( ( h == HKEY_CLASSES_ROOT ) \ || ( h == HKEY_CURRENT_USER ) \ || ( h == HKEY_LOCAL_MACHINE ) \ || ( h == HKEY_USERS ) \ || ( h == HKEY_CURRENT_CONFIG ) \ || ( h == HKEY_PERFORMANCE_DATA ) \ || ( h == HKEY_DYN_DATA )) \ ? TRUE \ : FALSE ) class CRegistry { public: HKEY CreateKey(IN HKEY hKey, IN LPCTSTR pszSubKey, IN REGSAM samDesired); HKEY CreateKey(IN HKEY hKey, IN LPCTSTR pszSubKey, IN REGSAM samDesired, OUT LPDWORD pdwDisposition); LONG CloseKey(IN HKEY hKey); LPSTR GetString(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszValueName); BOOL GetDword(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszValueName, IN LPDWORD lpdwData); BOOL SetString(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszValueName, IN LPCTSTR pszData); BOOL SetMultiSzString(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszValueName, IN LPCTSTR pszData, IN DWORD cbSize); BOOL SetDword(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszValueName, IN DWORD dwData); BOOL DeleteString(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszValueName); BOOL IsRegistryKeyPresent(IN HKEY hKey, IN LPCTSTR pszSubKey); void Free(IN LPVOID pvMem); BOOL AddStringToMultiSz(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszEntry); BOOL RemoveStringFromMultiSz(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszEntry); BOOL RestoreKey(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszFileName, IN BOOL fGrantPrivs); BOOL BackupRegistryKey(IN HKEY hKey, IN LPCTSTR pszSubKey, IN LPCTSTR pszFileName, IN BOOL fGrantPrivs); private: DWORD GetStringSize(IN HKEY hKey, IN LPCTSTR pszValueName, IN OUT LPDWORD lpType OPTIONAL); LPVOID Malloc(IN SIZE_T cbBytes); HKEY OpenKey(IN HKEY hKey, IN LPCTSTR pszSubKey, IN REGSAM samDesired); int ListStoreLen(IN LPTSTR pszList); BOOL ModifyTokenPrivilege(IN LPCTSTR pszPrivilege, IN BOOL fEnable); }; #endif // _CREGISTRY_H