Leaked source code of windows server 2003
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.
 
 
 
 
 
 

59 lines
2.1 KiB

#ifndef __REGINS_H_
#define __REGINS_H_
#define RH_HKCR TEXT("HKCR\\")
#define RH_HKCU TEXT("HKCU\\")
#define RH_HKLM TEXT("HKLM\\")
#define RH_HKU TEXT("HKU\\")
struct CRegInsMap {
// Operations
public:
HRESULT PerformAction(HKEY *phk = NULL);
HRESULT RegToIns(HKEY *phk = NULL, BOOL fClear = FALSE);
HRESULT InsToReg(HKEY *phk = NULL, BOOL fClear = FALSE);
HRESULT RegToInsArray(CRegInsMap *prg, UINT cEntries, BOOL fClear = FALSE);
HRESULT InsToRegArray(CRegInsMap *prg, UINT cEntries, BOOL fClear = FALSE);
// Properties
public:
LPCTSTR m_pszRegKey;
LPCTSTR m_pszRegValue;
DWORD m_dwFlags;
static LPCTSTR s_pszIns;
LPCTSTR m_pszInsSection;
LPCTSTR m_pszInsKey;
// Implementation
public:
// implementation helper routines
void openRegKey(HKEY *phk);
#define GH_LOOKUPONLY 0x0001
#define GH_DEFAULT 0x0000
HRESULT getHive(HKEY *phk, LPCTSTR *ppszRegKey, WORD wFlags = GH_DEFAULT);
// REVIEW: (andrewgu)
// 1. add support for removing values not just moving;
// 2. add support for reusing the reg key (perf) also if hk is provided and so is reg key,
// open the key still but base it on hk;
// 3. (shortcoming) in a run through array there'll be calls to getHive for every item, the
// hive information will be lost from m_pszRegKey. this means that only one run is possible.
// in order to perform another run, the array needs to be reinitialized. in order to fix this
// problem, HKEY member variable is needed in CRegInsMap;
// 4. (ideas for the next round of work) remove m_var, replace it with m_dwFlags. the benifits
// are numerious:
// - saves memory;
// - m_var doesn't handle everthing; support is required for things like File, YesToBool,
// BoolToYes, String, Number, Bool;
// - the same m_dwFlags can hold the fClear flag;
// - one usefull thing to add would be Action flags, like RegToIns or InsToReg, it can be ORed
// with fClear and stored in the samae m_dwFlags;
// 5. set of macros to mask the complexity of building the static array of map entries;
};
#endif