Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//****************************************************************************
//
// Copyright (c) 1995, Microsoft Corp.
//
// File: REGKEY.H
//
// Definitions for registry management classes
//
// History:
// Scott V. Walker, SEA 10/5/94
//
//****************************************************************************
#ifndef _REGKEY_H_
#define _REGKEY_H_
#include <tchar.h>
//****************************************************************************
//
// CLASS: CRegistryValue
//
//****************************************************************************
class CRegistryValue : public CObject { DECLARE_DYNAMIC(CRegistryValue)
public: CString m_sName; DWORD m_dwType; DWORD m_dwDataLength; LPBYTE m_pData;
public: CRegistryValue(); CRegistryValue(LPCTSTR pszName, DWORD dwType, DWORD dwDataLength, LPBYTE pData); ~CRegistryValue();
void Set(LPCTSTR pszName, DWORD dwType, DWORD dwDataLength, LPBYTE pData); void Get(CString &sName, DWORD &dwType, DWORD &dwDataLength, LPBYTE pData = NULL); void Empty(); const CRegistryValue& operator=(CRegistryValue &other); };
//****************************************************************************
//
// CLASS: CRegistryKey
//
//****************************************************************************
class CRegistryKey : public CObject { DECLARE_DYNAMIC(CRegistryKey)
public: CString m_sComputer; // Name of computer we're connected to
HKEY m_hkeyConnect; // Handle to current connection key (or NULL)
HKEY m_hkeyRemote; // Handle to remote connection key (or NULL)
BOOL m_bConnected; // TRUE if currently connected
BOOL m_bLocal; // TRUE if connected to the local computer
HKEY m_hkeyOpen; // Handle to currently open key (or NULL)
BOOL m_bOpen; // TRUE if currently open
CString m_sFullName; // Full path name of currently open key
CString m_sKeyName; // Name of currently open key
REGSAM m_Sam; // Security access mask we opened with
BOOL m_bDirty; // TRUE if there are changes pending in this key
CString m_sClass; // Class name of key
DWORD m_dwSubKeys; // Number of subkeys in this key
DWORD m_dwMaxSubKey; // Longest subkey name length
DWORD m_dwMaxClass; // Longest class string length
DWORD m_dwValues; // Number of value entries in current key
DWORD m_dwMaxValueName; // Longest value name length
DWORD m_dwMaxValueData; // Longest value data length
DWORD m_dwSecurityDescriptor; // Security descriptor length
FILETIME m_ftLastWriteTime; // Last modification date for key or values
LONG m_lResult; // Last return value from a registry API
public: CRegistryKey(); ~CRegistryKey();
void Initialize(); LONG Connect(LPCTSTR pszComputer = NULL, HKEY hkey = HKEY_LOCAL_MACHINE); LONG Disconnect(BOOL bForce = FALSE); LONG Open(LPCTSTR pszKeyName, REGSAM samDesired = KEY_ALL_ACCESS); LONG Create(LPCTSTR pszKeyName, DWORD &dwDisposition, LPCTSTR pszClass = NULL, REGSAM samDesired = KEY_ALL_ACCESS, LPSECURITY_ATTRIBUTES lpSecAttr = NULL); LONG Close(BOOL bForce = FALSE); CStringArray* EnumValues(); CStringArray* EnumSubKeys(); BOOL GetValue(LPCTSTR pszValue, CRegistryValue ®val); BOOL SetValue(CRegistryValue ®val); BOOL GetSubKey(LPCTSTR pszSubKey, CRegistryKey ®key); BOOL CreateSubKey(LPCTSTR pszSubKey, CRegistryKey ®key, LPCTSTR pszClass = NULL, LPSECURITY_ATTRIBUTES lpSecAttr = NULL, BOOL bIsVolatile = FALSE); BOOL DeleteSubKey(LPCTSTR pszSubKey); };
class CEventTrapRegistry { public: CEventTrapRegistry(); ~CEventTrapRegistry(); };
extern BOOL g_bLostConnection;
#endif // _REGKEY_H_
|