00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00023 #ifndef INCLUDE_REGISTRY_H
00024 #define INCLUDE_REGISTRY_H
00025 
00026 #include "MyString.h"
00027 #include "MyList.h"
00028 #pragma comment(lib, "advapi32.lib")
00029 
00077 class MyRegistry  
00078 {
00079         public:
00080                 MyRegistry (BOOL autoCreate=FALSE);                                     
00081                 BOOL operator= (char *nameKey) { return Open(nameKey); }
00082                 BOOL Open(char *nameKey);                               
00083 
00084                 void GetKeyName(MyString &result);
00085                 BOOL Create(char *nameKey);
00086 
00087                 void SetAutoCreate(BOOL autoCreate);
00088                 BOOL IsAutoCreate();
00089 
00090                 int GetValueType(char *param);
00091                 int GetValueSize(char *param);
00092 
00093                 
00094                 BOOL GetValue(char *param , char *result , char *defValue=NULL);                
00095                 
00096                 BOOL GetValue(char *param, MyString &result , char *defValue=NULL);     
00097                 
00098                 BOOL GetValueMulti(char *param, MyList<MyString> &result , char *defValue=NULL); 
00099                 
00100                 BOOL GetValueExpand(char *param, char *result , char *defValue=NULL); 
00101                 
00102                 BOOL GetValueExpand(char *param, MyString &result , char *defValue=NULL); 
00103                 
00104                 BOOL GetValue(char *param,int *result,int defValue=0);                  
00105                 
00106                 BOOL GetValue(char *param,DWORD *result,DWORD defValue=0);              
00107                 
00108                 BOOL GetValue(char *param,LONGLONG *result,LONGLONG defValue=0);        
00109                 
00110                 LPBYTE GetValue(char *param);
00111                 
00112                 BOOL GetValue(char *param,float *result,float defValue=0);
00113                 BOOL GetValue(char *param,double *result,double defValue=0);
00114 
00115                 BOOL SetValue(char *param);                                                                     
00116                 BOOL SetValue(char *param,int value);                                           
00117                 BOOL SetValue(char *param,DWORD value);                                         
00118                 BOOL SetValueLittleEndian(char *param,DWORD value);                     
00119                 BOOL SetValueBigEndian(char *param,DWORD value);                        
00120                 BOOL SetValue(char *param,LONGLONG value);                                      
00121                 BOOL SetValueLittleEndian(char *param,LONGLONG value);          
00122                 BOOL SetValue(char *param,char *value);                                         
00123                 BOOL SetValueExpand(char *param,char *value);                           
00124                 BOOL SetValueMulti(char *param,MyList<MyString> &lString);
00125                 BOOL SetValueMulti(char *param,char *value);                            
00126                 BOOL SetValue(char *param,LPBYTE data,int size);                        
00127                 BOOL SetValue(char *param,float result);                                        
00128                 BOOL SetValue(char *param,double result);                                       
00129 
00130                 BOOL DeleteValue(char *param);
00131                 BOOL DeleteKey(char *nameKey=NULL);
00132 
00133                 BOOL TestValue(char *param);
00134                 BOOL TestKey();
00135                 int GetLastError() { return m_lastError; }
00136 
00137                 void BeginEnumKey() { m_numEnumKey = 0; }
00138                 BOOL NextEnumKey(char *result);
00139                 BOOL NextEnumKey(MyString &result);
00140 
00141                 void BeginEnumValue() { m_numEnumValue = 0; }
00142                 BOOL NextEnumValue (char *result);
00143                 BOOL NextEnumValue (MyString &result);
00144 
00145                 
00146                 
00147         private:
00148                 BOOL SetPrefixAndPostfix(char *nameKey);
00149                 BOOL SetKeyName(char *nameKey);
00150                 void HKeyToString (MyString &result);
00151                 LPBYTE GetValue(char *param ,DWORD uTypeResult);
00152                 BOOL SetValue(char *param,LPBYTE source,ULONG uTypeSource,ULONG sizeSource);
00153 
00154 
00155         private: 
00156                 HKEY m_hKey;
00157                 MyString m_postFixKey;
00158                 BOOL m_lastError;
00159 
00160                 int m_numEnumValue;
00161                 int m_numEnumKey;
00162 
00163                 BOOL m_isAutoCreate;
00164 };
00165 
00166 BOOL NextSubKey(MyString &key,MyString &subKey,MyString &suite);
00167 
00168 #endif