1*f6dc9357SAndroid Build Coastguard Worker // Windows/Registry.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_WINDOWS_REGISTRY_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_WINDOWS_REGISTRY_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyBuffer.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyString.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker namespace NWindows { 10*f6dc9357SAndroid Build Coastguard Worker namespace NRegistry { 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker LONG SetValue(HKEY parentKey, LPCTSTR keyName, LPCTSTR valueName, LPCTSTR value); 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker class CKey 15*f6dc9357SAndroid Build Coastguard Worker { 16*f6dc9357SAndroid Build Coastguard Worker HKEY _object; 17*f6dc9357SAndroid Build Coastguard Worker QueryValueEx(LPCTSTR lpValueName,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData)18*f6dc9357SAndroid Build Coastguard Worker LONG QueryValueEx(LPCTSTR lpValueName, LPDWORD lpType, 19*f6dc9357SAndroid Build Coastguard Worker LPBYTE lpData, LPDWORD lpcbData) 20*f6dc9357SAndroid Build Coastguard Worker { 21*f6dc9357SAndroid Build Coastguard Worker return RegQueryValueEx(_object, lpValueName, NULL, lpType, lpData, lpcbData); 22*f6dc9357SAndroid Build Coastguard Worker } 23*f6dc9357SAndroid Build Coastguard Worker 24*f6dc9357SAndroid Build Coastguard Worker public: CKey()25*f6dc9357SAndroid Build Coastguard Worker CKey(): _object(NULL) {} ~CKey()26*f6dc9357SAndroid Build Coastguard Worker ~CKey() { Close(); } 27*f6dc9357SAndroid Build Coastguard Worker HKEY()28*f6dc9357SAndroid Build Coastguard Worker operator HKEY() const { return _object; } Attach(HKEY key)29*f6dc9357SAndroid Build Coastguard Worker void Attach(HKEY key) { _object = key; } Detach()30*f6dc9357SAndroid Build Coastguard Worker HKEY Detach() 31*f6dc9357SAndroid Build Coastguard Worker { 32*f6dc9357SAndroid Build Coastguard Worker const HKEY key = _object; 33*f6dc9357SAndroid Build Coastguard Worker _object = NULL; 34*f6dc9357SAndroid Build Coastguard Worker return key; 35*f6dc9357SAndroid Build Coastguard Worker } 36*f6dc9357SAndroid Build Coastguard Worker 37*f6dc9357SAndroid Build Coastguard Worker LONG Create(HKEY parentKey, LPCTSTR keyName, 38*f6dc9357SAndroid Build Coastguard Worker LPTSTR keyClass = REG_NONE, 39*f6dc9357SAndroid Build Coastguard Worker DWORD options = REG_OPTION_NON_VOLATILE, 40*f6dc9357SAndroid Build Coastguard Worker REGSAM accessMask = KEY_ALL_ACCESS, 41*f6dc9357SAndroid Build Coastguard Worker LPSECURITY_ATTRIBUTES securityAttributes = NULL, 42*f6dc9357SAndroid Build Coastguard Worker LPDWORD disposition = NULL) throw(); 43*f6dc9357SAndroid Build Coastguard Worker LONG Open(HKEY parentKey, LPCTSTR keyName, REGSAM accessMask = KEY_ALL_ACCESS) throw(); 44*f6dc9357SAndroid Build Coastguard Worker 45*f6dc9357SAndroid Build Coastguard Worker LONG Close() throw(); 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker LONG DeleteSubKey(LPCTSTR subKeyName) throw(); 48*f6dc9357SAndroid Build Coastguard Worker LONG RecurseDeleteKey(LPCTSTR subKeyName) throw(); 49*f6dc9357SAndroid Build Coastguard Worker 50*f6dc9357SAndroid Build Coastguard Worker LONG DeleteValue(LPCTSTR name) throw(); 51*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE 52*f6dc9357SAndroid Build Coastguard Worker LONG DeleteValue(LPCWSTR name); 53*f6dc9357SAndroid Build Coastguard Worker #endif 54*f6dc9357SAndroid Build Coastguard Worker 55*f6dc9357SAndroid Build Coastguard Worker LONG SetValue(LPCTSTR valueName, UInt32 value) throw(); 56*f6dc9357SAndroid Build Coastguard Worker LONG SetValue(LPCTSTR valueName, bool value) throw(); 57*f6dc9357SAndroid Build Coastguard Worker LONG SetValue(LPCTSTR valueName, LPCTSTR value) throw(); 58*f6dc9357SAndroid Build Coastguard Worker // LONG SetValue(LPCTSTR valueName, const CSysString &value); 59*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE 60*f6dc9357SAndroid Build Coastguard Worker LONG SetValue(LPCWSTR name, LPCWSTR value); 61*f6dc9357SAndroid Build Coastguard Worker // LONG SetValue(LPCWSTR name, const UString &value); 62*f6dc9357SAndroid Build Coastguard Worker #endif 63*f6dc9357SAndroid Build Coastguard Worker 64*f6dc9357SAndroid Build Coastguard Worker LONG SetValue(LPCTSTR name, const void *value, UInt32 size) throw(); 65*f6dc9357SAndroid Build Coastguard Worker 66*f6dc9357SAndroid Build Coastguard Worker LONG SetValue_Strings(LPCTSTR valueName, const UStringVector &strings); 67*f6dc9357SAndroid Build Coastguard Worker LONG GetValue_Strings(LPCTSTR valueName, UStringVector &strings); 68*f6dc9357SAndroid Build Coastguard Worker 69*f6dc9357SAndroid Build Coastguard Worker LONG SetKeyValue(LPCTSTR keyName, LPCTSTR valueName, LPCTSTR value) throw(); 70*f6dc9357SAndroid Build Coastguard Worker 71*f6dc9357SAndroid Build Coastguard Worker // GetValue_[type]_IfOk(): 72*f6dc9357SAndroid Build Coastguard Worker // if (return_result == ERROR_SUCCESS), (value) variable was read from registry 73*f6dc9357SAndroid Build Coastguard Worker // if (return_result != ERROR_SUCCESS), (value) variable was not changed 74*f6dc9357SAndroid Build Coastguard Worker LONG GetValue_UInt32_IfOk(LPCTSTR name, UInt32 &value) throw(); 75*f6dc9357SAndroid Build Coastguard Worker LONG GetValue_UInt64_IfOk(LPCTSTR name, UInt64 &value) throw(); 76*f6dc9357SAndroid Build Coastguard Worker LONG GetValue_bool_IfOk(LPCTSTR name, bool &value) throw(); 77*f6dc9357SAndroid Build Coastguard Worker 78*f6dc9357SAndroid Build Coastguard Worker // QueryValue(): 79*f6dc9357SAndroid Build Coastguard Worker // if (return_result == ERROR_SUCCESS), (value) string was read from registry 80*f6dc9357SAndroid Build Coastguard Worker // if (return_result != ERROR_SUCCESS), (value) string was cleared 81*f6dc9357SAndroid Build Coastguard Worker LONG QueryValue(LPCTSTR name, CSysString &value); 82*f6dc9357SAndroid Build Coastguard Worker #ifndef _UNICODE 83*f6dc9357SAndroid Build Coastguard Worker LONG QueryValue(LPCWSTR name, UString &value); 84*f6dc9357SAndroid Build Coastguard Worker #endif 85*f6dc9357SAndroid Build Coastguard Worker 86*f6dc9357SAndroid Build Coastguard Worker // QueryValue_Binary(): 87*f6dc9357SAndroid Build Coastguard Worker // if (return_result == ERROR_SUCCESS), (value) buffer was read from registry (BINARY data) 88*f6dc9357SAndroid Build Coastguard Worker // if (return_result != ERROR_SUCCESS), (value) buffer was cleared 89*f6dc9357SAndroid Build Coastguard Worker LONG QueryValue_Binary(LPCTSTR name, CByteBuffer &value); 90*f6dc9357SAndroid Build Coastguard Worker 91*f6dc9357SAndroid Build Coastguard Worker LONG EnumKeys(CSysStringVector &keyNames); 92*f6dc9357SAndroid Build Coastguard Worker }; 93*f6dc9357SAndroid Build Coastguard Worker 94*f6dc9357SAndroid Build Coastguard Worker }} 95*f6dc9357SAndroid Build Coastguard Worker 96*f6dc9357SAndroid Build Coastguard Worker #endif 97