4 * Windows Registry Management API Declarations
9 * Written by Anders Norlander <anorland@hem2.passagen.se>
10 * Copyright (C) 2002, 2006, 2008, 2012, 2013, 2016, 2017, MinGW.org Project
13 * Permission is hereby granted, free of charge, to any person obtaining a
14 * copy of this software and associated documentation files (the "Software"),
15 * to deal in the Software without restriction, including without limitation
16 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 * and/or sell copies of the Software, and to permit persons to whom the
18 * Software is furnished to do so, subject to the following conditions:
20 * The above copyright notice and this permission notice (including the next
21 * paragraph) shall be included in all copies or substantial portions of the
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30 * DEALINGS IN THE SOFTWARE.
34 #pragma GCC system_header
46 #define HKEY_CLASSES_ROOT ((HKEY)(0x80000000))
47 #define HKEY_CURRENT_USER ((HKEY)(0x80000001))
48 #define HKEY_LOCAL_MACHINE ((HKEY)(0x80000002))
49 #define HKEY_USERS ((HKEY)(0x80000003))
50 #define HKEY_PERFORMANCE_DATA ((HKEY)(0x80000004))
51 #define HKEY_CURRENT_CONFIG ((HKEY)(0x80000005))
52 #define HKEY_DYN_DATA ((HKEY)(0x80000006))
54 #define REG_OPTION_VOLATILE 1
55 #define REG_OPTION_NON_VOLATILE 0
57 /* https://msdn.microsoft.com/en-us/library/aa965882%28v=vs.85%29.aspx */
58 #define REG_OPTION_BACKUP_RESTORE 4
60 #define REG_CREATED_NEW_KEY 1
61 #define REG_OPENED_EXISTING_KEY 2
65 #define REG_EXPAND_SZ 2
67 #define REG_DWORD_LITTLE_ENDIAN 4
69 #define REG_DWORD_BIG_ENDIAN 5
71 #define REG_MULTI_SZ 7
72 #define REG_RESOURCE_LIST 8
73 #define REG_FULL_RESOURCE_DESCRIPTOR 9
74 #define REG_RESOURCE_REQUIREMENTS_LIST 10
75 #define REG_QWORD_LITTLE_ENDIAN 11
78 #define REG_NOTIFY_CHANGE_NAME 1
79 #define REG_NOTIFY_CHANGE_ATTRIBUTES 2
80 #define REG_NOTIFY_CHANGE_LAST_SET 4
81 #define REG_NOTIFY_CHANGE_SECURITY 8
83 /* https://msdn.microsoft.com/en-us/library/ms724868%28v=vs.85%29.aspx */
84 #define RRF_RT_REG_NONE 0x00000001
85 #define RRF_RT_REG_SZ 0x00000002
86 #define RRF_RT_REG_EXPAND_SZ 0x00000004
87 #define RRF_RT_REG_BINARY 0x00000008
88 #define RRF_RT_REG_DWORD 0x00000010
89 #define RRF_RT_DWORD 0x00000018
90 #define RRF_RT_REG_MULTI_SZ 0x00000020
91 #define RRF_RT_REG_QWORD 0x00000040
92 #define RRF_RT_QWORD 0x00000048
93 #define RRF_RT_ANY 0x0000FFFF
94 #define RRF_SUBKEY_WOW6464KEY 0x00010000
95 #define RRF_SUBKEY_WOW6432KEY 0x00020000
96 #define RRF_NOEXPAND 0x10000000
97 #define RRF_ZEROONFAILURE 0x20000000
99 /* https://msdn.microsoft.com/en-us/library/ms724919%28v=vs.85%29.aspx */
100 #define REG_STANDARD_FORMAT 1
101 #define REG_LATEST_FORMAT 2
103 #define REG_NO_COMPRESSION 4
107 typedef ACCESS_MASK REGSAM;
109 typedef struct value_entA
110 { LPSTR ve_valuename;
114 } VALENTA, *PVALENTA;
116 typedef struct value_entW
117 { LPWSTR ve_valuename;
121 } VALENTW, *PVALENTW;
123 typedef __AW_ALIAS__(VALENT), *PVALENT;
125 #define AbortSystemShutdown __AW_SUFFIXED__(AbortSystemShutdown)
126 WINADVAPI BOOL WINAPI AbortSystemShutdownA (LPCSTR);
127 WINADVAPI BOOL WINAPI AbortSystemShutdownW (LPCWSTR);
129 #define InitiateSystemShutdown __AW_SUFFIXED__(InitiateSystemShutdown)
130 WINADVAPI BOOL WINAPI InitiateSystemShutdownA (LPSTR, LPSTR, DWORD, BOOL, BOOL);
131 WINADVAPI BOOL WINAPI InitiateSystemShutdownW (LPWSTR, LPWSTR, DWORD, BOOL, BOOL);
133 WINADVAPI LONG WINAPI RegCloseKey (HKEY);
135 #define RegConnectRegistry __AW_SUFFIXED__(RegConnectRegistry)
136 WINADVAPI LONG WINAPI RegConnectRegistryA (LPCSTR, HKEY, PHKEY);
137 WINADVAPI LONG WINAPI RegConnectRegistryW (LPCWSTR, HKEY, PHKEY);
139 #define RegCreateKey __AW_SUFFIXED__(RegCreateKey)
140 WINADVAPI LONG WINAPI RegCreateKeyA (HKEY, LPCSTR, PHKEY);
141 WINADVAPI LONG WINAPI RegCreateKeyW (HKEY, LPCWSTR, PHKEY);
143 #define RegCreateKeyEx __AW_SUFFIXED__(RegCreateKeyEx)
144 WINADVAPI LONG WINAPI RegCreateKeyExA
145 ( HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES,
148 WINADVAPI LONG WINAPI RegCreateKeyExW
149 ( HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES,
152 #define RegDeleteKey __AW_SUFFIXED__(RegDeleteKey)
153 WINADVAPI LONG WINAPI RegDeleteKeyA (HKEY, LPCSTR);
154 WINADVAPI LONG WINAPI RegDeleteKeyW (HKEY, LPCWSTR);
156 #define RegDeleteValue __AW_SUFFIXED__(RegDeleteValue)
157 WINADVAPI LONG WINAPI RegDeleteValueA (HKEY, LPCSTR);
158 WINADVAPI LONG WINAPI RegDeleteValueW (HKEY, LPCWSTR);
160 /* https://msdn.microsoft.com/en-us/library/ms724854%28v=vs.85%29.aspx */
161 WINADVAPI LONG WINAPI RegDisablePredefinedCache (void);
163 #define RegEnumKey __AW_SUFFIXED__(RegEnumKey)
164 WINADVAPI LONG WINAPI RegEnumKeyA (HKEY, DWORD, LPSTR, DWORD);
165 WINADVAPI LONG WINAPI RegEnumKeyW (HKEY, DWORD, LPWSTR, DWORD);
167 #define RegEnumKeyEx __AW_SUFFIXED__(RegEnumKeyEx)
168 WINADVAPI LONG WINAPI RegEnumKeyExA
169 ( HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, PFILETIME
171 WINADVAPI LONG WINAPI RegEnumKeyExW
172 ( HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, PFILETIME
174 #define RegEnumValue __AW_SUFFIXED__(RegEnumValue)
175 WINADVAPI LONG WINAPI RegEnumValueA
176 ( HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, PDWORD
178 WINADVAPI LONG WINAPI RegEnumValueW
179 ( HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, PDWORD
181 WINADVAPI LONG WINAPI RegFlushKey (HKEY);
182 WINADVAPI LONG WINAPI RegGetKeySecurity
183 ( HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PDWORD
185 #define RegLoadKey __AW_SUFFIXED__(RegLoadKey)
186 WINADVAPI LONG WINAPI RegLoadKeyA (HKEY, LPCSTR, LPCSTR);
187 WINADVAPI LONG WINAPI RegLoadKeyW (HKEY, LPCWSTR, LPCWSTR);
189 WINADVAPI LONG WINAPI RegNotifyChangeKeyValue (HKEY, BOOL, DWORD, HANDLE, BOOL);
191 /* https://msdn.microsoft.com/en-us/library/ms724894%28v=vs.85%29.aspx */
192 WINADVAPI LONG WINAPI RegOpenCurrentUser (REGSAM, PHKEY);
194 #define RegOpenKey __AW_SUFFIXED__(RegOpenKey)
195 WINADVAPI LONG WINAPI RegOpenKeyA (HKEY, LPCSTR, PHKEY);
196 WINADVAPI LONG WINAPI RegOpenKeyW (HKEY, LPCWSTR, PHKEY);
198 #define RegOpenKeyEx __AW_SUFFIXED__(RegOpenKeyEx)
199 WINADVAPI LONG WINAPI RegOpenKeyExA (HKEY, LPCSTR, DWORD, REGSAM, PHKEY);
200 WINADVAPI LONG WINAPI RegOpenKeyExW (HKEY, LPCWSTR, DWORD, REGSAM, PHKEY);
202 /* https://msdn.microsoft.com/en-us/library/ms724899%28v=vs.85%29.aspx */
203 WINADVAPI LONG WINAPI RegOpenUserClassesRoot (HANDLE, DWORD, REGSAM, PHKEY);
205 /* https://msdn.microsoft.com/en-us/library/ms724901%28v=vs.85%29.aspx */
206 WINADVAPI LONG WINAPI RegOverridePredefKey (HKEY, HKEY);
208 #define RegQueryInfoKey __AW_SUFFIXED__(RegQueryInfoKey)
209 WINADVAPI LONG WINAPI RegQueryInfoKeyA
210 ( HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD,
211 PDWORD, PDWORD, PFILETIME
213 WINADVAPI LONG WINAPI RegQueryInfoKeyW
214 ( HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD,
215 PDWORD, PDWORD, PFILETIME
217 #define RegQueryMultipleValues __AW_SUFFIXED__(RegQueryMultipleValues)
218 WINADVAPI LONG WINAPI RegQueryMultipleValuesA
219 ( HKEY, PVALENTA, DWORD, LPSTR, LPDWORD
221 WINADVAPI LONG WINAPI RegQueryMultipleValuesW
222 ( HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD
224 #define RegQueryValue __AW_SUFFIXED__(RegQueryValue)
225 WINADVAPI LONG WINAPI RegQueryValueA (HKEY, LPCSTR, LPSTR, PLONG);
226 WINADVAPI LONG WINAPI RegQueryValueW (HKEY, LPCWSTR, LPWSTR, PLONG);
228 #define RegQueryValueEx __AW_SUFFIXED__(RegQueryValueEx)
229 WINADVAPI LONG WINAPI RegQueryValueExA
230 ( HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD
232 WINADVAPI LONG WINAPI RegQueryValueExW
233 ( HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD
235 #define RegReplaceKey __AW_SUFFIXED__(RegReplaceKey)
236 WINADVAPI LONG WINAPI RegReplaceKeyA (HKEY, LPCSTR, LPCSTR, LPCSTR);
237 WINADVAPI LONG WINAPI RegReplaceKeyW (HKEY, LPCWSTR, LPCWSTR, LPCWSTR);
239 #define RegRestoreKey __AW_SUFFIXED__(RegRestoreKey)
240 WINADVAPI LONG WINAPI RegRestoreKeyA (HKEY, LPCSTR, DWORD);
241 WINADVAPI LONG WINAPI RegRestoreKeyW (HKEY, LPCWSTR, DWORD);
243 #define RegSaveKey __AW_SUFFIXED__(RegSaveKey)
244 WINADVAPI LONG WINAPI RegSaveKeyA (HKEY, LPCSTR, LPSECURITY_ATTRIBUTES);
245 WINADVAPI LONG WINAPI RegSaveKeyW (HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES);
247 WINADVAPI LONG WINAPI RegSetKeySecurity
248 ( HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR
250 #define RegSetValue __AW_SUFFIXED__(RegSetValue)
251 WINADVAPI LONG WINAPI RegSetValueA (HKEY, LPCSTR, DWORD, LPCSTR, DWORD);
252 WINADVAPI LONG WINAPI RegSetValueW (HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD);
254 #define RegSetValueEx __AW_SUFFIXED__(RegSetValueEx)
255 WINADVAPI LONG WINAPI RegSetValueExA
256 ( HKEY, LPCSTR, DWORD, DWORD, const BYTE *, DWORD
258 WINADVAPI LONG WINAPI RegSetValueExW
259 ( HKEY, LPCWSTR, DWORD, DWORD, const BYTE *, DWORD
261 #define RegUnLoadKey __AW_SUFFIXED__(RegUnLoadKey)
262 WINADVAPI LONG WINAPI RegUnLoadKeyA (HKEY, LPCSTR);
263 WINADVAPI LONG WINAPI RegUnLoadKeyW (HKEY, LPCWSTR);
265 #if _WIN32_WINNT >= _WIN32_WINNT_WINXP
266 #define RegSaveKeyEx __AW_SUFFIXED__(RegSaveKeyEx)
267 /* https://msdn.microsoft.com/en-us/library/ms724919%28v=vs.85%29.aspx */
268 WINADVAPI LONG WINAPI RegSaveKeyExA (HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD);
269 WINADVAPI LONG WINAPI RegSaveKeyExW (HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD);
271 #if _WIN32_WINNT >= _WIN32_WINNT_WS03
272 #define RegDeleteKeyEx __AW_SUFFIXED__(RegDeleteKeyEx)
273 WINADVAPI LONG WINAPI RegDeleteKeyExA (HKEY, LPCSTR, REGSAM, DWORD);
274 WINADVAPI LONG WINAPI RegDeleteKeyExW (HKEY, LPCWSTR, REGSAM, DWORD);
276 /* https://msdn.microsoft.com/en-us/library/ms724858%28v=vs.85%29.aspx */
277 WINADVAPI LONG WINAPI RegDisableReflectionKey (HKEY);
279 /* https://msdn.microsoft.com/en-us/library/ms724859%28v=vs.85%29.aspx */
280 WINADVAPI LONG WINAPI RegEnableReflectionKey (HKEY);
282 /* https://msdn.microsoft.com/en-us/library/ms724907%28v=vs.85%29.aspx */
283 WINADVAPI LONG WINAPI RegQueryReflectionKey (HKEY, BOOL *);
285 #if _WIN32_WINNT >= _WIN32_WINNT_VISTA
286 #define RegCopyTree __AW_SUFFIXED__(RegCopyTree)
287 /* https://msdn.microsoft.com/en-us/library/aa379768%28v=vs.85%29.aspx */
288 WINADVAPI LONG WINAPI RegCopyTreeA (HKEY, LPCSTR, HKEY);
289 WINADVAPI LONG WINAPI RegCopyTreeW (HKEY, LPCWSTR, HKEY);
291 #define RegCreateKeyTransacted __AW_SUFFIXED__(RegCreateKeyTransacted)
292 /* https://msdn.microsoft.com/en-us/library/aa965882%28v=vs.85%29.aspx */
293 WINADVAPI LONG WINAPI RegCreateKeyTransactedA
294 ( HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, const LPSECURITY_ATTRIBUTES,
295 PHKEY, LPDWORD, HANDLE, PVOID
297 WINADVAPI LONG WINAPI RegCreateKeyTransactedW
298 ( HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, const LPSECURITY_ATTRIBUTES,
299 PHKEY, LPDWORD, HANDLE, PVOID
301 #define RegDeleteKeyTransacted __AW_SUFFIXED__(RegDeleteKeyTransacted)
302 /* https://msdn.microsoft.com/en-us/library/aa965883%28v=vs.85%29.aspx */
303 WINADVAPI LONG WINAPI RegDeleteKeyTransactedA
304 ( HKEY, LPCSTR, REGSAM, DWORD, HANDLE, PVOID
306 WINADVAPI LONG WINAPI RegDeleteKeyTransactedW
307 ( HKEY, LPCWSTR, REGSAM, DWORD, HANDLE, PVOID
309 #define RegDeleteKeyValue __AW_SUFFIXED__(RegDeleteKeyValue)
310 /* https://msdn.microsoft.com/en-us/library/ms724848%28v=vs.85%29.aspx */
311 WINADVAPI LONG WINAPI RegDeleteKeyValueA (HKEY, LPCSTR, LPCSTR);
312 WINADVAPI LONG WINAPI RegDeleteKeyValueW (HKEY, LPCWSTR, LPCWSTR);
314 #define RegDeleteTree __AW_SUFFIXED__(RegDeleteTree)
315 /* https://msdn.microsoft.com/en-us/library/aa379776%28v=vs.85%29.aspx */
316 WINADVAPI LONG WINAPI RegDeleteTreeA (HKEY, LPCSTR);
317 WINADVAPI LONG WINAPI RegDeleteTreeW (HKEY, LPCWSTR);
319 /* https://msdn.microsoft.com/en-us/library/ms724855%28v=vs.85%29.aspx */
320 WINADVAPI LONG WINAPI RegDisablePredefinedCacheEx (void);
322 #define RegGetValue __AW_SUFFIXED__(RegGetValue)
323 /* https://msdn.microsoft.com/en-us/library/ms724868%28v=vs.85%29.aspx */
324 WINADVAPI LONG WINAPI RegGetValueA
325 ( HKEY, LPCSTR, LPCSTR, DWORD, LPDWORD, PVOID, LPDWORD
327 WINADVAPI LONG WINAPI RegGetValueW
328 ( HKEY, LPCWSTR, LPCWSTR, DWORD, LPDWORD, PVOID, LPDWORD
330 #define RegLoadMUIString __AW_SUFFIXED__(RegLoadMUIString)
331 /* https://msdn.microsoft.com/en-us/library/ms724890%28v=vs.85%29.aspx */
332 WINADVAPI LONG WINAPI RegLoadMUIStringA
333 ( HKEY, LPCSTR, LPSTR, DWORD, LPDWORD, DWORD, LPCSTR
335 WINADVAPI LONG WINAPI RegLoadMUIStringW
336 ( HKEY, LPCWSTR, LPWSTR, DWORD, LPDWORD, DWORD, LPCWSTR
338 #define RegOpenKeyTransacted __AW_SUFFIXED__(RegOpenKeyTransacted)
339 /* https://msdn.microsoft.com/en-us/library/aa965886%28v=vs.85%29.aspx */
340 WINADVAPI LONG WINAPI RegOpenKeyTransactedA
341 ( HKEY, LPCSTR, DWORD, REGSAM, PHKEY, HANDLE, PVOID
343 WINADVAPI LONG WINAPI RegOpenKeyTransactedW
344 ( HKEY, LPCWSTR, DWORD, REGSAM, PHKEY, HANDLE, PVOID
346 #define RegSetKeyValue __AW_SUFFIXED__(RegSetKeyValue)
347 /* https://msdn.microsoft.com/en-us/library/ms724921%28v=vs.85%29.aspx */
348 WINADVAPI LONG WINAPI RegSetKeyValueA
349 ( HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD
351 WINADVAPI LONG WINAPI RegSetKeyValueW
352 ( HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD
354 #endif /* _WIN32_WINNT >= _WIN32_WINNT_VISTA */
355 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WS03 */
356 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
358 #endif /* ! RC_INVOKED */
362 #endif /* !_WINREG_H: $RCSfile$: end of file */