xref: /aosp_15_r20/external/lzma/CPP/Windows/Registry.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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