blob: e9c026102273310f88bab7b8ef63d0db5658b95e [file] [log] [blame]
Serhiy Storchaka29b0a262016-12-04 10:20:55 +02001:mod:`winreg` --- Windows registry access
Georg Brandl116aa622007-08-15 14:28:22 +00002=========================================
3
Georg Brandl38feaf02008-05-25 07:45:51 +00004.. module:: winreg
Georg Brandl116aa622007-08-15 14:28:22 +00005 :platform: Windows
6 :synopsis: Routines and objects for manipulating the Windows registry.
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007
Georg Brandl116aa622007-08-15 14:28:22 +00008.. sectionauthor:: Mark Hammond <MarkH@ActiveState.com>
9
Terry Jan Reedyfa089b92016-06-11 15:02:54 -040010--------------
Georg Brandl116aa622007-08-15 14:28:22 +000011
Georg Brandl116aa622007-08-15 14:28:22 +000012These functions expose the Windows registry API to Python. Instead of using an
Georg Brandl8173fb32010-05-19 21:03:51 +000013integer as the registry handle, a :ref:`handle object <handle-object>` is used
14to ensure that the handles are closed correctly, even if the programmer neglects
15to explicitly close them.
Georg Brandl116aa622007-08-15 14:28:22 +000016
Andrew Svetlov616f8032012-10-31 19:29:33 +020017.. _exception-changed:
18
19.. versionchanged:: 3.3
20 Several functions in this module used to raise a
21 :exc:`WindowsError`, which is now an alias of :exc:`OSError`.
22
23.. _functions:
24
25Functions
26------------------
27
Georg Brandl116aa622007-08-15 14:28:22 +000028This module offers the following functions:
29
30
31.. function:: CloseKey(hkey)
32
Georg Brandl8173fb32010-05-19 21:03:51 +000033 Closes a previously opened registry key. The *hkey* argument specifies a
Georg Brandl116aa622007-08-15 14:28:22 +000034 previously opened key.
35
Brian Curtin2d067c82010-05-11 20:35:47 +000036 .. note::
Georg Brandl8173fb32010-05-19 21:03:51 +000037
38 If *hkey* is not closed using this method (or via :meth:`hkey.Close()
39 <PyHKEY.Close>`), it is closed when the *hkey* object is destroyed by
40 Python.
Georg Brandl116aa622007-08-15 14:28:22 +000041
42
43.. function:: ConnectRegistry(computer_name, key)
44
Ezio Melottibc372982010-04-25 17:48:01 +000045 Establishes a connection to a predefined registry handle on another computer,
46 and returns a :ref:`handle object <handle-object>`.
Georg Brandl116aa622007-08-15 14:28:22 +000047
Ezio Melottibc372982010-04-25 17:48:01 +000048 *computer_name* is the name of the remote computer, of the form
Georg Brandl116aa622007-08-15 14:28:22 +000049 ``r"\\computername"``. If ``None``, the local computer is used.
50
51 *key* is the predefined handle to connect to.
52
Andrew Svetlov616f8032012-10-31 19:29:33 +020053 The return value is the handle of the opened key. If the function fails, an
Antoine Pitrou442ee032011-10-12 18:53:23 +020054 :exc:`OSError` exception is raised.
55
56 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +020057 See :ref:`above <exception-changed>`.
Georg Brandl116aa622007-08-15 14:28:22 +000058
59
60.. function:: CreateKey(key, sub_key)
61
Ezio Melottibc372982010-04-25 17:48:01 +000062 Creates or opens the specified key, returning a
63 :ref:`handle object <handle-object>`.
Georg Brandl116aa622007-08-15 14:28:22 +000064
Brian Curtin2d067c82010-05-11 20:35:47 +000065 *key* is an already open key, or one of the predefined
66 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +000067
Ezio Melottibc372982010-04-25 17:48:01 +000068 *sub_key* is a string that names the key this method opens or creates.
Georg Brandl116aa622007-08-15 14:28:22 +000069
Ezio Melottibc372982010-04-25 17:48:01 +000070 If *key* is one of the predefined keys, *sub_key* may be ``None``. In that
71 case, the handle returned is the same key handle passed in to the function.
Georg Brandl116aa622007-08-15 14:28:22 +000072
73 If the key already exists, this function opens the existing key.
74
Andrew Svetlov616f8032012-10-31 19:29:33 +020075 The return value is the handle of the opened key. If the function fails, an
Antoine Pitrou442ee032011-10-12 18:53:23 +020076 :exc:`OSError` exception is raised.
77
78 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +020079 See :ref:`above <exception-changed>`.
Georg Brandl116aa622007-08-15 14:28:22 +000080
81
Brian Curtine9aeca72012-10-29 18:16:39 -050082.. function:: CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE)
Brian Curtin3035c392010-04-21 23:56:21 +000083
Ezio Melottibc372982010-04-25 17:48:01 +000084 Creates or opens the specified key, returning a
85 :ref:`handle object <handle-object>`.
Brian Curtin3035c392010-04-21 23:56:21 +000086
Brian Curtin2d067c82010-05-11 20:35:47 +000087 *key* is an already open key, or one of the predefined
88 :ref:`HKEY_* constants <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +000089
90 *sub_key* is a string that names the key this method opens or creates.
91
Brian Curtine9aeca72012-10-29 18:16:39 -050092 *reserved* is a reserved integer, and must be zero. The default is zero.
Brian Curtin3035c392010-04-21 23:56:21 +000093
Brian Curtine9aeca72012-10-29 18:16:39 -050094 *access* is an integer that specifies an access mask that describes the desired
95 security access for the key. Default is :const:`KEY_WRITE`. See
Brian Curtin2d067c82010-05-11 20:35:47 +000096 :ref:`Access Rights <access-rights>` for other allowed values.
Brian Curtin3035c392010-04-21 23:56:21 +000097
Ezio Melottibc372982010-04-25 17:48:01 +000098 If *key* is one of the predefined keys, *sub_key* may be ``None``. In that
99 case, the handle returned is the same key handle passed in to the function.
Brian Curtin3035c392010-04-21 23:56:21 +0000100
101 If the key already exists, this function opens the existing key.
102
Andrew Svetlov616f8032012-10-31 19:29:33 +0200103 The return value is the handle of the opened key. If the function fails, an
Antoine Pitrou442ee032011-10-12 18:53:23 +0200104 :exc:`OSError` exception is raised.
Brian Curtin3035c392010-04-21 23:56:21 +0000105
Georg Brandl4c25cf32010-04-22 07:00:42 +0000106 .. versionadded:: 3.2
Brian Curtin3035c392010-04-21 23:56:21 +0000107
Antoine Pitrou442ee032011-10-12 18:53:23 +0200108 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +0200109 See :ref:`above <exception-changed>`.
Antoine Pitrou442ee032011-10-12 18:53:23 +0200110
Brian Curtin3035c392010-04-21 23:56:21 +0000111
Georg Brandl116aa622007-08-15 14:28:22 +0000112.. function:: DeleteKey(key, sub_key)
113
114 Deletes the specified key.
115
Brian Curtin2d067c82010-05-11 20:35:47 +0000116 *key* is an already open key, or one of the predefined
117 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000118
Brian Curtin3035c392010-04-21 23:56:21 +0000119 *sub_key* is a string that must be a subkey of the key identified by the *key*
120 parameter. This value must not be ``None``, and the key may not have subkeys.
Georg Brandl116aa622007-08-15 14:28:22 +0000121
122 *This method can not delete keys with subkeys.*
123
124 If the method succeeds, the entire key, including all of its values, is removed.
Andrew Svetlov616f8032012-10-31 19:29:33 +0200125 If the method fails, an :exc:`OSError` exception is raised.
Antoine Pitrou442ee032011-10-12 18:53:23 +0200126
127 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +0200128 See :ref:`above <exception-changed>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000129
130
Brian Curtine9aeca72012-10-29 18:16:39 -0500131.. function:: DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0)
Brian Curtin3035c392010-04-21 23:56:21 +0000132
133 Deletes the specified key.
134
135 .. note::
136 The :func:`DeleteKeyEx` function is implemented with the RegDeleteKeyEx
137 Windows API function, which is specific to 64-bit versions of Windows.
Brian Curtin2d067c82010-05-11 20:35:47 +0000138 See the `RegDeleteKeyEx documentation
Georg Brandl5d941342016-02-26 19:37:12 +0100139 <https://msdn.microsoft.com/en-us/library/ms724847%28VS.85%29.aspx>`__.
Brian Curtin3035c392010-04-21 23:56:21 +0000140
Brian Curtin2d067c82010-05-11 20:35:47 +0000141 *key* is an already open key, or one of the predefined
142 :ref:`HKEY_* constants <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000143
144 *sub_key* is a string that must be a subkey of the key identified by the
145 *key* parameter. This value must not be ``None``, and the key may not have
146 subkeys.
147
Brian Curtine9aeca72012-10-29 18:16:39 -0500148 *reserved* is a reserved integer, and must be zero. The default is zero.
Brian Curtin3035c392010-04-21 23:56:21 +0000149
Brian Curtine9aeca72012-10-29 18:16:39 -0500150 *access* is an integer that specifies an access mask that describes the desired
Zachary Waref7d28742014-01-21 13:49:22 -0600151 security access for the key. Default is :const:`KEY_WOW64_64KEY`. See
Brian Curtin2d067c82010-05-11 20:35:47 +0000152 :ref:`Access Rights <access-rights>` for other allowed values.
Brian Curtin3035c392010-04-21 23:56:21 +0000153
154 *This method can not delete keys with subkeys.*
155
156 If the method succeeds, the entire key, including all of its values, is
Andrew Svetlov616f8032012-10-31 19:29:33 +0200157 removed. If the method fails, an :exc:`OSError` exception is raised.
Brian Curtin3035c392010-04-21 23:56:21 +0000158
159 On unsupported Windows versions, :exc:`NotImplementedError` is raised.
160
Georg Brandl4c25cf32010-04-22 07:00:42 +0000161 .. versionadded:: 3.2
Brian Curtin3035c392010-04-21 23:56:21 +0000162
Antoine Pitrou442ee032011-10-12 18:53:23 +0200163 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +0200164 See :ref:`above <exception-changed>`.
Antoine Pitrou442ee032011-10-12 18:53:23 +0200165
Brian Curtin3035c392010-04-21 23:56:21 +0000166
Georg Brandl116aa622007-08-15 14:28:22 +0000167.. function:: DeleteValue(key, value)
168
169 Removes a named value from a registry key.
170
Brian Curtin2d067c82010-05-11 20:35:47 +0000171 *key* is an already open key, or one of the predefined
172 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000173
174 *value* is a string that identifies the value to remove.
175
176
177.. function:: EnumKey(key, index)
178
179 Enumerates subkeys of an open registry key, returning a string.
180
Brian Curtin2d067c82010-05-11 20:35:47 +0000181 *key* is an already open key, or one of the predefined
182 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000183
Ezio Melottibc372982010-04-25 17:48:01 +0000184 *index* is an integer that identifies the index of the key to retrieve.
Georg Brandl116aa622007-08-15 14:28:22 +0000185
Ezio Melottibc372982010-04-25 17:48:01 +0000186 The function retrieves the name of one subkey each time it is called. It is
Andrew Svetlov616f8032012-10-31 19:29:33 +0200187 typically called repeatedly until an :exc:`OSError` exception is
Georg Brandl116aa622007-08-15 14:28:22 +0000188 raised, indicating, no more values are available.
189
Antoine Pitrou442ee032011-10-12 18:53:23 +0200190 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +0200191 See :ref:`above <exception-changed>`.
Antoine Pitrou442ee032011-10-12 18:53:23 +0200192
Georg Brandl116aa622007-08-15 14:28:22 +0000193
194.. function:: EnumValue(key, index)
195
196 Enumerates values of an open registry key, returning a tuple.
197
Brian Curtin2d067c82010-05-11 20:35:47 +0000198 *key* is an already open key, or one of the predefined
199 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000200
Ezio Melottibc372982010-04-25 17:48:01 +0000201 *index* is an integer that identifies the index of the value to retrieve.
Georg Brandl116aa622007-08-15 14:28:22 +0000202
Ezio Melottibc372982010-04-25 17:48:01 +0000203 The function retrieves the name of one subkey each time it is called. It is
Andrew Svetlov616f8032012-10-31 19:29:33 +0200204 typically called repeatedly, until an :exc:`OSError` exception is
Ezio Melottibc372982010-04-25 17:48:01 +0000205 raised, indicating no more values.
Georg Brandl116aa622007-08-15 14:28:22 +0000206
207 The result is a tuple of 3 items:
208
209 +-------+--------------------------------------------+
210 | Index | Meaning |
211 +=======+============================================+
212 | ``0`` | A string that identifies the value name |
213 +-------+--------------------------------------------+
214 | ``1`` | An object that holds the value data, and |
215 | | whose type depends on the underlying |
216 | | registry type |
217 +-------+--------------------------------------------+
218 | ``2`` | An integer that identifies the type of the |
Georg Brandl8173fb32010-05-19 21:03:51 +0000219 | | value data (see table in docs for |
220 | | :meth:`SetValueEx`) |
Georg Brandl116aa622007-08-15 14:28:22 +0000221 +-------+--------------------------------------------+
222
Antoine Pitrou442ee032011-10-12 18:53:23 +0200223 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +0200224 See :ref:`above <exception-changed>`.
Antoine Pitrou442ee032011-10-12 18:53:23 +0200225
Georg Brandl116aa622007-08-15 14:28:22 +0000226
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300227.. index::
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200228 single: % (percent); environment variables expansion (Windows)
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300229
Ezio Melotti985e24d2009-09-13 07:54:02 +0000230.. function:: ExpandEnvironmentStrings(str)
Christian Heimes2380ac72008-01-09 00:17:24 +0000231
Georg Brandl8173fb32010-05-19 21:03:51 +0000232 Expands environment variable placeholders ``%NAME%`` in strings like
233 :const:`REG_EXPAND_SZ`::
Christian Heimes2380ac72008-01-09 00:17:24 +0000234
Ezio Melotti985e24d2009-09-13 07:54:02 +0000235 >>> ExpandEnvironmentStrings('%windir%')
236 'C:\\Windows'
Christian Heimes2380ac72008-01-09 00:17:24 +0000237
Christian Heimes2380ac72008-01-09 00:17:24 +0000238
Georg Brandl116aa622007-08-15 14:28:22 +0000239.. function:: FlushKey(key)
240
241 Writes all the attributes of a key to the registry.
242
Brian Curtin2d067c82010-05-11 20:35:47 +0000243 *key* is an already open key, or one of the predefined
244 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000245
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000246 It is not necessary to call :func:`FlushKey` to change a key. Registry changes are
Ezio Melottibc372982010-04-25 17:48:01 +0000247 flushed to disk by the registry using its lazy flusher. Registry changes are
248 also flushed to disk at system shutdown. Unlike :func:`CloseKey`, the
249 :func:`FlushKey` method returns only when all the data has been written to the
Georg Brandl116aa622007-08-15 14:28:22 +0000250 registry. An application should only call :func:`FlushKey` if it requires
Ezio Melottibc372982010-04-25 17:48:01 +0000251 absolute certainty that registry changes are on disk.
Georg Brandl116aa622007-08-15 14:28:22 +0000252
253 .. note::
254
Ezio Melottibc372982010-04-25 17:48:01 +0000255 If you don't know whether a :func:`FlushKey` call is required, it probably
Georg Brandl116aa622007-08-15 14:28:22 +0000256 isn't.
257
258
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000259.. function:: LoadKey(key, sub_key, file_name)
Georg Brandl116aa622007-08-15 14:28:22 +0000260
Ezio Melottibc372982010-04-25 17:48:01 +0000261 Creates a subkey under the specified key and stores registration information
Georg Brandl116aa622007-08-15 14:28:22 +0000262 from a specified file into that subkey.
263
Brian Curtin2d067c82010-05-11 20:35:47 +0000264 *key* is a handle returned by :func:`ConnectRegistry` or one of the constants
265 :const:`HKEY_USERS` or :const:`HKEY_LOCAL_MACHINE`.
Georg Brandl116aa622007-08-15 14:28:22 +0000266
Georg Brandl8173fb32010-05-19 21:03:51 +0000267 *sub_key* is a string that identifies the subkey to load.
Georg Brandl116aa622007-08-15 14:28:22 +0000268
269 *file_name* is the name of the file to load registry data from. This file must
270 have been created with the :func:`SaveKey` function. Under the file allocation
271 table (FAT) file system, the filename may not have an extension.
272
Georg Brandl8173fb32010-05-19 21:03:51 +0000273 A call to :func:`LoadKey` fails if the calling process does not have the
274 :const:`SE_RESTORE_PRIVILEGE` privilege. Note that privileges are different
Brian Curtin2d067c82010-05-11 20:35:47 +0000275 from permissions -- see the `RegLoadKey documentation
Georg Brandl5d941342016-02-26 19:37:12 +0100276 <https://msdn.microsoft.com/en-us/library/ms724889%28v=VS.85%29.aspx>`__ for
Brian Curtin2d067c82010-05-11 20:35:47 +0000277 more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000278
Ezio Melottibc372982010-04-25 17:48:01 +0000279 If *key* is a handle returned by :func:`ConnectRegistry`, then the path
Georg Brandl8173fb32010-05-19 21:03:51 +0000280 specified in *file_name* is relative to the remote computer.
Georg Brandl116aa622007-08-15 14:28:22 +0000281
282
Brian Curtin13c70342012-05-29 18:34:45 -0500283.. function:: OpenKey(key, sub_key, reserved=0, access=KEY_READ)
Brian Curtine9aeca72012-10-29 18:16:39 -0500284 OpenKeyEx(key, sub_key, reserved=0, access=KEY_READ)
Georg Brandl116aa622007-08-15 14:28:22 +0000285
Ezio Melottibc372982010-04-25 17:48:01 +0000286 Opens the specified key, returning a :ref:`handle object <handle-object>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000287
Brian Curtin2d067c82010-05-11 20:35:47 +0000288 *key* is an already open key, or one of the predefined
289 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000290
291 *sub_key* is a string that identifies the sub_key to open.
292
Brian Curtin13c70342012-05-29 18:34:45 -0500293 *reserved* is a reserved integer, and must be zero. The default is zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000294
Brian Curtin13c70342012-05-29 18:34:45 -0500295 *access* is an integer that specifies an access mask that describes the desired
Georg Brandl8173fb32010-05-19 21:03:51 +0000296 security access for the key. Default is :const:`KEY_READ`. See :ref:`Access
297 Rights <access-rights>` for other allowed values.
Georg Brandl116aa622007-08-15 14:28:22 +0000298
299 The result is a new handle to the specified key.
300
Antoine Pitrou442ee032011-10-12 18:53:23 +0200301 If the function fails, :exc:`OSError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000302
Georg Brandl61063cc2012-06-24 22:48:30 +0200303 .. versionchanged:: 3.2
304 Allow the use of named arguments.
Brian Curtin1771b542010-09-27 17:56:36 +0000305
Antoine Pitrou442ee032011-10-12 18:53:23 +0200306 .. versionchanged:: 3.3
Andrew Svetlov616f8032012-10-31 19:29:33 +0200307 See :ref:`above <exception-changed>`.
Antoine Pitrou442ee032011-10-12 18:53:23 +0200308
Georg Brandl116aa622007-08-15 14:28:22 +0000309
Georg Brandl116aa622007-08-15 14:28:22 +0000310.. function:: QueryInfoKey(key)
311
312 Returns information about a key, as a tuple.
313
Brian Curtin2d067c82010-05-11 20:35:47 +0000314 *key* is an already open key, or one of the predefined
315 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000316
317 The result is a tuple of 3 items:
318
319 +-------+---------------------------------------------+
320 | Index | Meaning |
321 +=======+=============================================+
322 | ``0`` | An integer giving the number of sub keys |
323 | | this key has. |
324 +-------+---------------------------------------------+
325 | ``1`` | An integer giving the number of values this |
326 | | key has. |
327 +-------+---------------------------------------------+
Georg Brandlba956ae2007-11-29 17:24:34 +0000328 | ``2`` | An integer giving when the key was last |
Georg Brandl116aa622007-08-15 14:28:22 +0000329 | | modified (if available) as 100's of |
Zachary Waref9dd2742014-08-11 15:00:48 -0500330 | | nanoseconds since Jan 1, 1601. |
Georg Brandl116aa622007-08-15 14:28:22 +0000331 +-------+---------------------------------------------+
332
333
334.. function:: QueryValue(key, sub_key)
335
Ezio Melottibc372982010-04-25 17:48:01 +0000336 Retrieves the unnamed value for a key, as a string.
Georg Brandl116aa622007-08-15 14:28:22 +0000337
Brian Curtin2d067c82010-05-11 20:35:47 +0000338 *key* is an already open key, or one of the predefined
339 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000340
Ezio Melottibc372982010-04-25 17:48:01 +0000341 *sub_key* is a string that holds the name of the subkey with which the value is
342 associated. If this parameter is ``None`` or empty, the function retrieves the
343 value set by the :func:`SetValue` method for the key identified by *key*.
Georg Brandl116aa622007-08-15 14:28:22 +0000344
Benjamin Petersond23f8222009-04-05 19:13:16 +0000345 Values in the registry have name, type, and data components. This method
Georg Brandl116aa622007-08-15 14:28:22 +0000346 retrieves the data for a key's first value that has a NULL name. But the
Benjamin Petersond23f8222009-04-05 19:13:16 +0000347 underlying API call doesn't return the type, so always use
348 :func:`QueryValueEx` if possible.
Georg Brandl116aa622007-08-15 14:28:22 +0000349
350
351.. function:: QueryValueEx(key, value_name)
352
Ezio Melottibc372982010-04-25 17:48:01 +0000353 Retrieves the type and data for a specified value name associated with
354 an open registry key.
Georg Brandl116aa622007-08-15 14:28:22 +0000355
Brian Curtin2d067c82010-05-11 20:35:47 +0000356 *key* is an already open key, or one of the predefined
357 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000358
359 *value_name* is a string indicating the value to query.
360
361 The result is a tuple of 2 items:
362
363 +-------+-----------------------------------------+
364 | Index | Meaning |
365 +=======+=========================================+
366 | ``0`` | The value of the registry item. |
367 +-------+-----------------------------------------+
368 | ``1`` | An integer giving the registry type for |
Georg Brandl8173fb32010-05-19 21:03:51 +0000369 | | this value (see table in docs for |
370 | | :meth:`SetValueEx`) |
Georg Brandl116aa622007-08-15 14:28:22 +0000371 +-------+-----------------------------------------+
372
373
374.. function:: SaveKey(key, file_name)
375
376 Saves the specified key, and all its subkeys to the specified file.
377
Brian Curtin2d067c82010-05-11 20:35:47 +0000378 *key* is an already open key, or one of the predefined
379 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000380
Georg Brandl8173fb32010-05-19 21:03:51 +0000381 *file_name* is the name of the file to save registry data to. This file
382 cannot already exist. If this filename includes an extension, it cannot be
383 used on file allocation table (FAT) file systems by the :meth:`LoadKey`
384 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000385
Ezio Melottibc372982010-04-25 17:48:01 +0000386 If *key* represents a key on a remote computer, the path described by
Georg Brandl116aa622007-08-15 14:28:22 +0000387 *file_name* is relative to the remote computer. The caller of this method must
Ezio Melottibc372982010-04-25 17:48:01 +0000388 possess the :const:`SeBackupPrivilege` security privilege. Note that
Brian Curtin2d067c82010-05-11 20:35:47 +0000389 privileges are different than permissions -- see the
390 `Conflicts Between User Rights and Permissions documentation
Georg Brandl5d941342016-02-26 19:37:12 +0100391 <https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__
Brian Curtin2d067c82010-05-11 20:35:47 +0000392 for more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000393
394 This function passes NULL for *security_attributes* to the API.
395
396
397.. function:: SetValue(key, sub_key, type, value)
398
399 Associates a value with a specified key.
400
Brian Curtin2d067c82010-05-11 20:35:47 +0000401 *key* is an already open key, or one of the predefined
402 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000403
Ezio Melottibc372982010-04-25 17:48:01 +0000404 *sub_key* is a string that names the subkey with which the value is associated.
Georg Brandl116aa622007-08-15 14:28:22 +0000405
406 *type* is an integer that specifies the type of the data. Currently this must be
407 :const:`REG_SZ`, meaning only strings are supported. Use the :func:`SetValueEx`
408 function for support for other data types.
409
410 *value* is a string that specifies the new value.
411
412 If the key specified by the *sub_key* parameter does not exist, the SetValue
413 function creates it.
414
415 Value lengths are limited by available memory. Long values (more than 2048
416 bytes) should be stored as files with the filenames stored in the configuration
417 registry. This helps the registry perform efficiently.
418
Ezio Melottibc372982010-04-25 17:48:01 +0000419 The key identified by the *key* parameter must have been opened with
Georg Brandl116aa622007-08-15 14:28:22 +0000420 :const:`KEY_SET_VALUE` access.
421
422
423.. function:: SetValueEx(key, value_name, reserved, type, value)
424
425 Stores data in the value field of an open registry key.
426
Brian Curtin2d067c82010-05-11 20:35:47 +0000427 *key* is an already open key, or one of the predefined
428 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000429
Ezio Melottibc372982010-04-25 17:48:01 +0000430 *value_name* is a string that names the subkey with which the value is
Georg Brandl116aa622007-08-15 14:28:22 +0000431 associated.
432
Brian Curtine9aeca72012-10-29 18:16:39 -0500433 *reserved* can be anything -- zero is always passed to the API.
434
Brian Curtin2d067c82010-05-11 20:35:47 +0000435 *type* is an integer that specifies the type of the data. See
436 :ref:`Value Types <value-types>` for the available types.
Georg Brandl116aa622007-08-15 14:28:22 +0000437
Georg Brandl116aa622007-08-15 14:28:22 +0000438 *value* is a string that specifies the new value.
439
440 This method can also set additional value and type information for the specified
441 key. The key identified by the key parameter must have been opened with
442 :const:`KEY_SET_VALUE` access.
443
Ezio Melottibc372982010-04-25 17:48:01 +0000444 To open the key, use the :func:`CreateKey` or :func:`OpenKey` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000445
446 Value lengths are limited by available memory. Long values (more than 2048
447 bytes) should be stored as files with the filenames stored in the configuration
448 registry. This helps the registry perform efficiently.
449
450
Brian Curtin3035c392010-04-21 23:56:21 +0000451.. function:: DisableReflectionKey(key)
452
453 Disables registry reflection for 32-bit processes running on a 64-bit
Georg Brandl8173fb32010-05-19 21:03:51 +0000454 operating system.
Brian Curtin3035c392010-04-21 23:56:21 +0000455
Georg Brandl8173fb32010-05-19 21:03:51 +0000456 *key* is an already open key, or one of the predefined :ref:`HKEY_* constants
457 <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000458
Georg Brandl8173fb32010-05-19 21:03:51 +0000459 Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating
460 system.
Brian Curtin3035c392010-04-21 23:56:21 +0000461
462 If the key is not on the reflection list, the function succeeds but has no
Georg Brandl8173fb32010-05-19 21:03:51 +0000463 effect. Disabling reflection for a key does not affect reflection of any
Brian Curtin3035c392010-04-21 23:56:21 +0000464 subkeys.
465
466
467.. function:: EnableReflectionKey(key)
468
469 Restores registry reflection for the specified disabled key.
470
Georg Brandl8173fb32010-05-19 21:03:51 +0000471 *key* is an already open key, or one of the predefined :ref:`HKEY_* constants
472 <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000473
Georg Brandl8173fb32010-05-19 21:03:51 +0000474 Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating
475 system.
Brian Curtin3035c392010-04-21 23:56:21 +0000476
477 Restoring reflection for a key does not affect reflection of any subkeys.
478
479
480.. function:: QueryReflectionKey(key)
481
482 Determines the reflection state for the specified key.
483
Brian Curtin2d067c82010-05-11 20:35:47 +0000484 *key* is an already open key, or one of the predefined
485 :ref:`HKEY_* constants <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000486
487 Returns ``True`` if reflection is disabled.
488
489 Will generally raise :exc:`NotImplemented` if executed on a 32-bit
Georg Brandl8173fb32010-05-19 21:03:51 +0000490 operating system.
Brian Curtin3035c392010-04-21 23:56:21 +0000491
492
Brian Curtin2d067c82010-05-11 20:35:47 +0000493.. _constants:
494
495Constants
496------------------
497
498The following constants are defined for use in many :mod:`_winreg` functions.
499
500.. _hkey-constants:
501
502HKEY_* Constants
503++++++++++++++++
504
505.. data:: HKEY_CLASSES_ROOT
506
507 Registry entries subordinate to this key define types (or classes) of
508 documents and the properties associated with those types. Shell and
509 COM applications use the information stored under this key.
510
511
512.. data:: HKEY_CURRENT_USER
513
514 Registry entries subordinate to this key define the preferences of
515 the current user. These preferences include the settings of
516 environment variables, data about program groups, colors, printers,
517 network connections, and application preferences.
518
519.. data:: HKEY_LOCAL_MACHINE
520
521 Registry entries subordinate to this key define the physical state
522 of the computer, including data about the bus type, system memory,
523 and installed hardware and software.
524
525.. data:: HKEY_USERS
526
527 Registry entries subordinate to this key define the default user
528 configuration for new users on the local computer and the user
529 configuration for the current user.
530
531.. data:: HKEY_PERFORMANCE_DATA
532
533 Registry entries subordinate to this key allow you to access
534 performance data. The data is not actually stored in the registry;
535 the registry functions cause the system to collect the data from
536 its source.
537
538
539.. data:: HKEY_CURRENT_CONFIG
540
541 Contains information about the current hardware profile of the
542 local computer system.
543
544.. data:: HKEY_DYN_DATA
545
546 This key is not used in versions of Windows after 98.
547
548
549.. _access-rights:
550
551Access Rights
552+++++++++++++
553
554For more information, see `Registry Key Security and Access
Georg Brandl5d941342016-02-26 19:37:12 +0100555<https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__.
Brian Curtin2d067c82010-05-11 20:35:47 +0000556
557.. data:: KEY_ALL_ACCESS
558
559 Combines the STANDARD_RIGHTS_REQUIRED, :const:`KEY_QUERY_VALUE`,
560 :const:`KEY_SET_VALUE`, :const:`KEY_CREATE_SUB_KEY`,
561 :const:`KEY_ENUMERATE_SUB_KEYS`, :const:`KEY_NOTIFY`,
562 and :const:`KEY_CREATE_LINK` access rights.
563
564.. data:: KEY_WRITE
565
566 Combines the STANDARD_RIGHTS_WRITE, :const:`KEY_SET_VALUE`, and
567 :const:`KEY_CREATE_SUB_KEY` access rights.
568
569.. data:: KEY_READ
570
571 Combines the STANDARD_RIGHTS_READ, :const:`KEY_QUERY_VALUE`,
572 :const:`KEY_ENUMERATE_SUB_KEYS`, and :const:`KEY_NOTIFY` values.
573
574.. data:: KEY_EXECUTE
575
576 Equivalent to :const:`KEY_READ`.
577
578.. data:: KEY_QUERY_VALUE
579
580 Required to query the values of a registry key.
581
582.. data:: KEY_SET_VALUE
583
584 Required to create, delete, or set a registry value.
585
586.. data:: KEY_CREATE_SUB_KEY
587
588 Required to create a subkey of a registry key.
589
590.. data:: KEY_ENUMERATE_SUB_KEYS
591
592 Required to enumerate the subkeys of a registry key.
593
594.. data:: KEY_NOTIFY
595
596 Required to request change notifications for a registry key or for
597 subkeys of a registry key.
598
599.. data:: KEY_CREATE_LINK
600
601 Reserved for system use.
602
603
604.. _64-bit-access-rights:
605
60664-bit Specific
607***************
608
Georg Brandl6faee4e2010-09-21 14:48:28 +0000609For more information, see `Accessing an Alternate Registry View
Georg Brandl5d941342016-02-26 19:37:12 +0100610<https://msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspx>`__.
Brian Curtin2d067c82010-05-11 20:35:47 +0000611
612.. data:: KEY_WOW64_64KEY
613
614 Indicates that an application on 64-bit Windows should operate on
615 the 64-bit registry view.
616
617.. data:: KEY_WOW64_32KEY
618
619 Indicates that an application on 64-bit Windows should operate on
620 the 32-bit registry view.
621
622
623.. _value-types:
624
625Value Types
626+++++++++++
627
628For more information, see `Registry Value Types
Georg Brandl5d941342016-02-26 19:37:12 +0100629<https://msdn.microsoft.com/en-us/library/ms724884%28v=VS.85%29.aspx>`__.
Brian Curtin2d067c82010-05-11 20:35:47 +0000630
631.. data:: REG_BINARY
632
633 Binary data in any form.
634
635.. data:: REG_DWORD
636
637 32-bit number.
638
639.. data:: REG_DWORD_LITTLE_ENDIAN
640
Steve Dower80ac11d2016-05-24 15:42:04 -0700641 A 32-bit number in little-endian format. Equivalent to :const:`REG_DWORD`.
Brian Curtin2d067c82010-05-11 20:35:47 +0000642
643.. data:: REG_DWORD_BIG_ENDIAN
644
645 A 32-bit number in big-endian format.
646
647.. data:: REG_EXPAND_SZ
648
649 Null-terminated string containing references to environment
650 variables (``%PATH%``).
651
652.. data:: REG_LINK
653
654 A Unicode symbolic link.
655
656.. data:: REG_MULTI_SZ
657
658 A sequence of null-terminated strings, terminated by two null characters.
659 (Python handles this termination automatically.)
660
661.. data:: REG_NONE
662
663 No defined value type.
664
Steve Dower80ac11d2016-05-24 15:42:04 -0700665.. data:: REG_QWORD
666
667 A 64-bit number.
668
Steve Dower4d4bc422016-05-25 11:26:07 -0700669 .. versionadded:: 3.6
670
Steve Dower80ac11d2016-05-24 15:42:04 -0700671.. data:: REG_QWORD_LITTLE_ENDIAN
672
673 A 64-bit number in little-endian format. Equivalent to :const:`REG_QWORD`.
674
Steve Dower4d4bc422016-05-25 11:26:07 -0700675 .. versionadded:: 3.6
676
Brian Curtin2d067c82010-05-11 20:35:47 +0000677.. data:: REG_RESOURCE_LIST
678
679 A device-driver resource list.
680
681.. data:: REG_FULL_RESOURCE_DESCRIPTOR
682
683 A hardware setting.
684
685.. data:: REG_RESOURCE_REQUIREMENTS_LIST
686
687 A hardware resource list.
688
689.. data:: REG_SZ
690
691 A null-terminated string.
692
693
Georg Brandl116aa622007-08-15 14:28:22 +0000694.. _handle-object:
695
696Registry Handle Objects
697-----------------------
698
699This object wraps a Windows HKEY object, automatically closing it when the
700object is destroyed. To guarantee cleanup, you can call either the
Georg Brandl8173fb32010-05-19 21:03:51 +0000701:meth:`~PyHKEY.Close` method on the object, or the :func:`CloseKey` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000702
703All registry functions in this module return one of these objects.
704
Ezio Melottibc372982010-04-25 17:48:01 +0000705All registry functions in this module which accept a handle object also accept
706an integer, however, use of the handle object is encouraged.
Georg Brandl116aa622007-08-15 14:28:22 +0000707
Ezio Melottibc372982010-04-25 17:48:01 +0000708Handle objects provide semantics for :meth:`__bool__` -- thus ::
Georg Brandl116aa622007-08-15 14:28:22 +0000709
710 if handle:
Georg Brandl6911e3c2007-09-04 07:15:32 +0000711 print("Yes")
Georg Brandl116aa622007-08-15 14:28:22 +0000712
713will print ``Yes`` if the handle is currently valid (has not been closed or
714detached).
715
716The object also support comparison semantics, so handle objects will compare
717true if they both reference the same underlying Windows handle value.
718
Georg Brandl22b34312009-07-26 14:54:51 +0000719Handle objects can be converted to an integer (e.g., using the built-in
Georg Brandl116aa622007-08-15 14:28:22 +0000720:func:`int` function), in which case the underlying Windows handle value is
Georg Brandl8173fb32010-05-19 21:03:51 +0000721returned. You can also use the :meth:`~PyHKEY.Detach` method to return the
722integer handle, and also disconnect the Windows handle from the handle object.
Georg Brandl116aa622007-08-15 14:28:22 +0000723
724
725.. method:: PyHKEY.Close()
726
727 Closes the underlying Windows handle.
728
729 If the handle is already closed, no error is raised.
730
731
732.. method:: PyHKEY.Detach()
733
734 Detaches the Windows handle from the handle object.
735
Georg Brandl5c106642007-11-29 17:41:05 +0000736 The result is an integer that holds the value of the handle before it is
737 detached. If the handle is already detached or closed, this will return
738 zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000739
740 After calling this function, the handle is effectively invalidated, but the
Ezio Melottibc372982010-04-25 17:48:01 +0000741 handle is not closed. You would call this function when you need the
742 underlying Win32 handle to exist beyond the lifetime of the handle object.
Georg Brandl116aa622007-08-15 14:28:22 +0000743
Christian Heimes2380ac72008-01-09 00:17:24 +0000744.. method:: PyHKEY.__enter__()
745 PyHKEY.__exit__(\*exc_info)
746
Georg Brandl8173fb32010-05-19 21:03:51 +0000747 The HKEY object implements :meth:`~object.__enter__` and
748 :meth:`~object.__exit__` and thus supports the context protocol for the
749 :keyword:`with` statement::
Christian Heimes2380ac72008-01-09 00:17:24 +0000750
751 with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key:
Georg Brandl8173fb32010-05-19 21:03:51 +0000752 ... # work with key
Christian Heimes2380ac72008-01-09 00:17:24 +0000753
754 will automatically close *key* when control leaves the :keyword:`with` block.
755
Christian Heimes2380ac72008-01-09 00:17:24 +0000756