blob: f7756da07d0a77fa38808cad7c553b293727b6db [file] [log] [blame]
Georg Brandl38feaf02008-05-25 07:45:51 +00001: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.
7.. sectionauthor:: Mark Hammond <MarkH@ActiveState.com>
8
9
Georg Brandl116aa622007-08-15 14:28:22 +000010These functions expose the Windows registry API to Python. Instead of using an
Georg Brandl8173fb32010-05-19 21:03:51 +000011integer as the registry handle, a :ref:`handle object <handle-object>` is used
12to ensure that the handles are closed correctly, even if the programmer neglects
13to explicitly close them.
Georg Brandl116aa622007-08-15 14:28:22 +000014
Georg Brandl116aa622007-08-15 14:28:22 +000015This module offers the following functions:
16
17
18.. function:: CloseKey(hkey)
19
Georg Brandl8173fb32010-05-19 21:03:51 +000020 Closes a previously opened registry key. The *hkey* argument specifies a
Georg Brandl116aa622007-08-15 14:28:22 +000021 previously opened key.
22
Brian Curtin2d067c82010-05-11 20:35:47 +000023 .. note::
Georg Brandl8173fb32010-05-19 21:03:51 +000024
25 If *hkey* is not closed using this method (or via :meth:`hkey.Close()
26 <PyHKEY.Close>`), it is closed when the *hkey* object is destroyed by
27 Python.
Georg Brandl116aa622007-08-15 14:28:22 +000028
29
30.. function:: ConnectRegistry(computer_name, key)
31
Ezio Melottibc372982010-04-25 17:48:01 +000032 Establishes a connection to a predefined registry handle on another computer,
33 and returns a :ref:`handle object <handle-object>`.
Georg Brandl116aa622007-08-15 14:28:22 +000034
Ezio Melottibc372982010-04-25 17:48:01 +000035 *computer_name* is the name of the remote computer, of the form
Georg Brandl116aa622007-08-15 14:28:22 +000036 ``r"\\computername"``. If ``None``, the local computer is used.
37
38 *key* is the predefined handle to connect to.
39
Benjamin Petersond23f8222009-04-05 19:13:16 +000040 The return value is the handle of the opened key. If the function fails, a
Antoine Pitrou442ee032011-10-12 18:53:23 +020041 :exc:`OSError` exception is raised.
42
43 .. versionchanged:: 3.3
44 This function used to raise a :exc:`WindowsError`, which is now an
45 alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +000046
47
48.. function:: CreateKey(key, sub_key)
49
Ezio Melottibc372982010-04-25 17:48:01 +000050 Creates or opens the specified key, returning a
51 :ref:`handle object <handle-object>`.
Georg Brandl116aa622007-08-15 14:28:22 +000052
Brian Curtin2d067c82010-05-11 20:35:47 +000053 *key* is an already open key, or one of the predefined
54 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +000055
Ezio Melottibc372982010-04-25 17:48:01 +000056 *sub_key* is a string that names the key this method opens or creates.
Georg Brandl116aa622007-08-15 14:28:22 +000057
Ezio Melottibc372982010-04-25 17:48:01 +000058 If *key* is one of the predefined keys, *sub_key* may be ``None``. In that
59 case, the handle returned is the same key handle passed in to the function.
Georg Brandl116aa622007-08-15 14:28:22 +000060
61 If the key already exists, this function opens the existing key.
62
Benjamin Petersond23f8222009-04-05 19:13:16 +000063 The return value is the handle of the opened key. If the function fails, a
Antoine Pitrou442ee032011-10-12 18:53:23 +020064 :exc:`OSError` exception is raised.
65
66 .. versionchanged:: 3.3
67 This function used to raise a :exc:`WindowsError`, which is now an
68 alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +000069
70
Brian Curtin1771b542010-09-27 17:56:36 +000071.. function:: CreateKeyEx(key, sub_key, reserved=0, access=KEY_ALL_ACCESS)
Brian Curtin3035c392010-04-21 23:56:21 +000072
Ezio Melottibc372982010-04-25 17:48:01 +000073 Creates or opens the specified key, returning a
74 :ref:`handle object <handle-object>`.
Brian Curtin3035c392010-04-21 23:56:21 +000075
Brian Curtin2d067c82010-05-11 20:35:47 +000076 *key* is an already open key, or one of the predefined
77 :ref:`HKEY_* constants <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +000078
79 *sub_key* is a string that names the key this method opens or creates.
80
81 *res* is a reserved integer, and must be zero. The default is zero.
82
83 *sam* is an integer that specifies an access mask that describes the desired
Brian Curtin2d067c82010-05-11 20:35:47 +000084 security access for the key. Default is :const:`KEY_ALL_ACCESS`. See
85 :ref:`Access Rights <access-rights>` for other allowed values.
Brian Curtin3035c392010-04-21 23:56:21 +000086
Ezio Melottibc372982010-04-25 17:48:01 +000087 If *key* is one of the predefined keys, *sub_key* may be ``None``. In that
88 case, the handle returned is the same key handle passed in to the function.
Brian Curtin3035c392010-04-21 23:56:21 +000089
90 If the key already exists, this function opens the existing key.
91
92 The return value is the handle of the opened key. If the function fails, a
Antoine Pitrou442ee032011-10-12 18:53:23 +020093 :exc:`OSError` exception is raised.
Brian Curtin3035c392010-04-21 23:56:21 +000094
Georg Brandl4c25cf32010-04-22 07:00:42 +000095 .. versionadded:: 3.2
Brian Curtin3035c392010-04-21 23:56:21 +000096
Antoine Pitrou442ee032011-10-12 18:53:23 +020097 .. versionchanged:: 3.3
98 This function used to raise a :exc:`WindowsError`, which is now an
99 alias of :exc:`OSError`.
100
Brian Curtin3035c392010-04-21 23:56:21 +0000101
Georg Brandl116aa622007-08-15 14:28:22 +0000102.. function:: DeleteKey(key, sub_key)
103
104 Deletes the specified key.
105
Brian Curtin2d067c82010-05-11 20:35:47 +0000106 *key* is an already open key, or one of the predefined
107 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000108
Brian Curtin3035c392010-04-21 23:56:21 +0000109 *sub_key* is a string that must be a subkey of the key identified by the *key*
110 parameter. This value must not be ``None``, and the key may not have subkeys.
Georg Brandl116aa622007-08-15 14:28:22 +0000111
112 *This method can not delete keys with subkeys.*
113
114 If the method succeeds, the entire key, including all of its values, is removed.
Antoine Pitrou442ee032011-10-12 18:53:23 +0200115 If the method fails, a :exc:`OSError` exception is raised.
116
117 .. versionchanged:: 3.3
118 This function used to raise a :exc:`WindowsError`, which is now an
119 alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000120
121
Brian Curtin1771b542010-09-27 17:56:36 +0000122.. function:: DeleteKeyEx(key, sub_key, access=KEY_ALL_ACCESS, reserved=0)
Brian Curtin3035c392010-04-21 23:56:21 +0000123
124 Deletes the specified key.
125
126 .. note::
127 The :func:`DeleteKeyEx` function is implemented with the RegDeleteKeyEx
128 Windows API function, which is specific to 64-bit versions of Windows.
Brian Curtin2d067c82010-05-11 20:35:47 +0000129 See the `RegDeleteKeyEx documentation
Benjamin Petersoncc1f5972010-06-06 02:41:24 +0000130 <http://msdn.microsoft.com/en-us/library/ms724847%28VS.85%29.aspx>`__.
Brian Curtin3035c392010-04-21 23:56:21 +0000131
Brian Curtin2d067c82010-05-11 20:35:47 +0000132 *key* is an already open key, or one of the predefined
133 :ref:`HKEY_* constants <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000134
135 *sub_key* is a string that must be a subkey of the key identified by the
136 *key* parameter. This value must not be ``None``, and the key may not have
137 subkeys.
138
139 *res* is a reserved integer, and must be zero. The default is zero.
140
Georg Brandl8173fb32010-05-19 21:03:51 +0000141 *sam* is an integer that specifies an access mask that describes the desired
Brian Curtin2d067c82010-05-11 20:35:47 +0000142 security access for the key. Default is :const:`KEY_ALL_ACCESS`. See
143 :ref:`Access Rights <access-rights>` for other allowed values.
Brian Curtin3035c392010-04-21 23:56:21 +0000144
145 *This method can not delete keys with subkeys.*
146
147 If the method succeeds, the entire key, including all of its values, is
Antoine Pitrou442ee032011-10-12 18:53:23 +0200148 removed. If the method fails, a :exc:`OSError` exception is raised.
Brian Curtin3035c392010-04-21 23:56:21 +0000149
150 On unsupported Windows versions, :exc:`NotImplementedError` is raised.
151
Georg Brandl4c25cf32010-04-22 07:00:42 +0000152 .. versionadded:: 3.2
Brian Curtin3035c392010-04-21 23:56:21 +0000153
Antoine Pitrou442ee032011-10-12 18:53:23 +0200154 .. versionchanged:: 3.3
155 This function used to raise a :exc:`WindowsError`, which is now an
156 alias of :exc:`OSError`.
157
Brian Curtin3035c392010-04-21 23:56:21 +0000158
Georg Brandl116aa622007-08-15 14:28:22 +0000159.. function:: DeleteValue(key, value)
160
161 Removes a named value from a registry key.
162
Brian Curtin2d067c82010-05-11 20:35:47 +0000163 *key* is an already open key, or one of the predefined
164 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000165
166 *value* is a string that identifies the value to remove.
167
168
169.. function:: EnumKey(key, index)
170
171 Enumerates subkeys of an open registry key, returning a string.
172
Brian Curtin2d067c82010-05-11 20:35:47 +0000173 *key* is an already open key, or one of the predefined
174 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000175
Ezio Melottibc372982010-04-25 17:48:01 +0000176 *index* is an integer that identifies the index of the key to retrieve.
Georg Brandl116aa622007-08-15 14:28:22 +0000177
Ezio Melottibc372982010-04-25 17:48:01 +0000178 The function retrieves the name of one subkey each time it is called. It is
Antoine Pitrou442ee032011-10-12 18:53:23 +0200179 typically called repeatedly until a :exc:`OSError` exception is
Georg Brandl116aa622007-08-15 14:28:22 +0000180 raised, indicating, no more values are available.
181
Antoine Pitrou442ee032011-10-12 18:53:23 +0200182 .. versionchanged:: 3.3
183 This function used to raise a :exc:`WindowsError`, which is now an
184 alias of :exc:`OSError`.
185
Georg Brandl116aa622007-08-15 14:28:22 +0000186
187.. function:: EnumValue(key, index)
188
189 Enumerates values of an open registry key, returning a tuple.
190
Brian Curtin2d067c82010-05-11 20:35:47 +0000191 *key* is an already open key, or one of the predefined
192 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000193
Ezio Melottibc372982010-04-25 17:48:01 +0000194 *index* is an integer that identifies the index of the value to retrieve.
Georg Brandl116aa622007-08-15 14:28:22 +0000195
Ezio Melottibc372982010-04-25 17:48:01 +0000196 The function retrieves the name of one subkey each time it is called. It is
Antoine Pitrou442ee032011-10-12 18:53:23 +0200197 typically called repeatedly, until a :exc:`OSError` exception is
Ezio Melottibc372982010-04-25 17:48:01 +0000198 raised, indicating no more values.
Georg Brandl116aa622007-08-15 14:28:22 +0000199
200 The result is a tuple of 3 items:
201
202 +-------+--------------------------------------------+
203 | Index | Meaning |
204 +=======+============================================+
205 | ``0`` | A string that identifies the value name |
206 +-------+--------------------------------------------+
207 | ``1`` | An object that holds the value data, and |
208 | | whose type depends on the underlying |
209 | | registry type |
210 +-------+--------------------------------------------+
211 | ``2`` | An integer that identifies the type of the |
Georg Brandl8173fb32010-05-19 21:03:51 +0000212 | | value data (see table in docs for |
213 | | :meth:`SetValueEx`) |
Georg Brandl116aa622007-08-15 14:28:22 +0000214 +-------+--------------------------------------------+
215
Antoine Pitrou442ee032011-10-12 18:53:23 +0200216 .. versionchanged:: 3.3
217 This function used to raise a :exc:`WindowsError`, which is now an
218 alias of :exc:`OSError`.
219
Georg Brandl116aa622007-08-15 14:28:22 +0000220
Ezio Melotti985e24d2009-09-13 07:54:02 +0000221.. function:: ExpandEnvironmentStrings(str)
Christian Heimes2380ac72008-01-09 00:17:24 +0000222
Georg Brandl8173fb32010-05-19 21:03:51 +0000223 Expands environment variable placeholders ``%NAME%`` in strings like
224 :const:`REG_EXPAND_SZ`::
Christian Heimes2380ac72008-01-09 00:17:24 +0000225
Ezio Melotti985e24d2009-09-13 07:54:02 +0000226 >>> ExpandEnvironmentStrings('%windir%')
227 'C:\\Windows'
Christian Heimes2380ac72008-01-09 00:17:24 +0000228
Christian Heimes2380ac72008-01-09 00:17:24 +0000229
Georg Brandl116aa622007-08-15 14:28:22 +0000230.. function:: FlushKey(key)
231
232 Writes all the attributes of a key to the registry.
233
Brian Curtin2d067c82010-05-11 20:35:47 +0000234 *key* is an already open key, or one of the predefined
235 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000236
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000237 It is not necessary to call :func:`FlushKey` to change a key. Registry changes are
Ezio Melottibc372982010-04-25 17:48:01 +0000238 flushed to disk by the registry using its lazy flusher. Registry changes are
239 also flushed to disk at system shutdown. Unlike :func:`CloseKey`, the
240 :func:`FlushKey` method returns only when all the data has been written to the
Georg Brandl116aa622007-08-15 14:28:22 +0000241 registry. An application should only call :func:`FlushKey` if it requires
Ezio Melottibc372982010-04-25 17:48:01 +0000242 absolute certainty that registry changes are on disk.
Georg Brandl116aa622007-08-15 14:28:22 +0000243
244 .. note::
245
Ezio Melottibc372982010-04-25 17:48:01 +0000246 If you don't know whether a :func:`FlushKey` call is required, it probably
Georg Brandl116aa622007-08-15 14:28:22 +0000247 isn't.
248
249
Alexandre Vassalotti6461e102008-05-15 22:09:29 +0000250.. function:: LoadKey(key, sub_key, file_name)
Georg Brandl116aa622007-08-15 14:28:22 +0000251
Ezio Melottibc372982010-04-25 17:48:01 +0000252 Creates a subkey under the specified key and stores registration information
Georg Brandl116aa622007-08-15 14:28:22 +0000253 from a specified file into that subkey.
254
Brian Curtin2d067c82010-05-11 20:35:47 +0000255 *key* is a handle returned by :func:`ConnectRegistry` or one of the constants
256 :const:`HKEY_USERS` or :const:`HKEY_LOCAL_MACHINE`.
Georg Brandl116aa622007-08-15 14:28:22 +0000257
Georg Brandl8173fb32010-05-19 21:03:51 +0000258 *sub_key* is a string that identifies the subkey to load.
Georg Brandl116aa622007-08-15 14:28:22 +0000259
260 *file_name* is the name of the file to load registry data from. This file must
261 have been created with the :func:`SaveKey` function. Under the file allocation
262 table (FAT) file system, the filename may not have an extension.
263
Georg Brandl8173fb32010-05-19 21:03:51 +0000264 A call to :func:`LoadKey` fails if the calling process does not have the
265 :const:`SE_RESTORE_PRIVILEGE` privilege. Note that privileges are different
Brian Curtin2d067c82010-05-11 20:35:47 +0000266 from permissions -- see the `RegLoadKey documentation
267 <http://msdn.microsoft.com/en-us/library/ms724889%28v=VS.85%29.aspx>`__ for
268 more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000269
Ezio Melottibc372982010-04-25 17:48:01 +0000270 If *key* is a handle returned by :func:`ConnectRegistry`, then the path
Georg Brandl8173fb32010-05-19 21:03:51 +0000271 specified in *file_name* is relative to the remote computer.
Georg Brandl116aa622007-08-15 14:28:22 +0000272
273
Brian Curtin13c70342012-05-29 18:34:45 -0500274.. function:: OpenKey(key, sub_key, reserved=0, access=KEY_READ)
Georg Brandl116aa622007-08-15 14:28:22 +0000275
Ezio Melottibc372982010-04-25 17:48:01 +0000276 Opens the specified key, returning a :ref:`handle object <handle-object>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000277
Brian Curtin2d067c82010-05-11 20:35:47 +0000278 *key* is an already open key, or one of the predefined
279 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000280
281 *sub_key* is a string that identifies the sub_key to open.
282
Brian Curtin13c70342012-05-29 18:34:45 -0500283 *reserved* is a reserved integer, and must be zero. The default is zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000284
Brian Curtin13c70342012-05-29 18:34:45 -0500285 *access* is an integer that specifies an access mask that describes the desired
Georg Brandl8173fb32010-05-19 21:03:51 +0000286 security access for the key. Default is :const:`KEY_READ`. See :ref:`Access
287 Rights <access-rights>` for other allowed values.
Georg Brandl116aa622007-08-15 14:28:22 +0000288
289 The result is a new handle to the specified key.
290
Antoine Pitrou442ee032011-10-12 18:53:23 +0200291 If the function fails, :exc:`OSError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000292
Brian Curtin1771b542010-09-27 17:56:36 +0000293 .. versionchanged:: 3.2 Allow the use of named arguments.
294
Antoine Pitrou442ee032011-10-12 18:53:23 +0200295 .. versionchanged:: 3.3
296 This function used to raise a :exc:`WindowsError`, which is now an
297 alias of :exc:`OSError`.
298
Georg Brandl116aa622007-08-15 14:28:22 +0000299
300.. function:: OpenKeyEx()
301
Ezio Melottibc372982010-04-25 17:48:01 +0000302 The functionality of :func:`OpenKeyEx` is provided via :func:`OpenKey`,
303 by the use of default arguments.
Georg Brandl116aa622007-08-15 14:28:22 +0000304
305
306.. function:: QueryInfoKey(key)
307
308 Returns information about a key, as a tuple.
309
Brian Curtin2d067c82010-05-11 20:35:47 +0000310 *key* is an already open key, or one of the predefined
311 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000312
313 The result is a tuple of 3 items:
314
315 +-------+---------------------------------------------+
316 | Index | Meaning |
317 +=======+=============================================+
318 | ``0`` | An integer giving the number of sub keys |
319 | | this key has. |
320 +-------+---------------------------------------------+
321 | ``1`` | An integer giving the number of values this |
322 | | key has. |
323 +-------+---------------------------------------------+
Georg Brandlba956ae2007-11-29 17:24:34 +0000324 | ``2`` | An integer giving when the key was last |
Georg Brandl116aa622007-08-15 14:28:22 +0000325 | | modified (if available) as 100's of |
326 | | nanoseconds since Jan 1, 1600. |
327 +-------+---------------------------------------------+
328
329
330.. function:: QueryValue(key, sub_key)
331
Ezio Melottibc372982010-04-25 17:48:01 +0000332 Retrieves the unnamed value for a key, as a string.
Georg Brandl116aa622007-08-15 14:28:22 +0000333
Brian Curtin2d067c82010-05-11 20:35:47 +0000334 *key* is an already open key, or one of the predefined
335 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000336
Ezio Melottibc372982010-04-25 17:48:01 +0000337 *sub_key* is a string that holds the name of the subkey with which the value is
338 associated. If this parameter is ``None`` or empty, the function retrieves the
339 value set by the :func:`SetValue` method for the key identified by *key*.
Georg Brandl116aa622007-08-15 14:28:22 +0000340
Benjamin Petersond23f8222009-04-05 19:13:16 +0000341 Values in the registry have name, type, and data components. This method
Georg Brandl116aa622007-08-15 14:28:22 +0000342 retrieves the data for a key's first value that has a NULL name. But the
Benjamin Petersond23f8222009-04-05 19:13:16 +0000343 underlying API call doesn't return the type, so always use
344 :func:`QueryValueEx` if possible.
Georg Brandl116aa622007-08-15 14:28:22 +0000345
346
347.. function:: QueryValueEx(key, value_name)
348
Ezio Melottibc372982010-04-25 17:48:01 +0000349 Retrieves the type and data for a specified value name associated with
350 an open registry key.
Georg Brandl116aa622007-08-15 14:28:22 +0000351
Brian Curtin2d067c82010-05-11 20:35:47 +0000352 *key* is an already open key, or one of the predefined
353 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000354
355 *value_name* is a string indicating the value to query.
356
357 The result is a tuple of 2 items:
358
359 +-------+-----------------------------------------+
360 | Index | Meaning |
361 +=======+=========================================+
362 | ``0`` | The value of the registry item. |
363 +-------+-----------------------------------------+
364 | ``1`` | An integer giving the registry type for |
Georg Brandl8173fb32010-05-19 21:03:51 +0000365 | | this value (see table in docs for |
366 | | :meth:`SetValueEx`) |
Georg Brandl116aa622007-08-15 14:28:22 +0000367 +-------+-----------------------------------------+
368
369
370.. function:: SaveKey(key, file_name)
371
372 Saves the specified key, and all its subkeys to the specified file.
373
Brian Curtin2d067c82010-05-11 20:35:47 +0000374 *key* is an already open key, or one of the predefined
375 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000376
Georg Brandl8173fb32010-05-19 21:03:51 +0000377 *file_name* is the name of the file to save registry data to. This file
378 cannot already exist. If this filename includes an extension, it cannot be
379 used on file allocation table (FAT) file systems by the :meth:`LoadKey`
380 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000381
Ezio Melottibc372982010-04-25 17:48:01 +0000382 If *key* represents a key on a remote computer, the path described by
Georg Brandl116aa622007-08-15 14:28:22 +0000383 *file_name* is relative to the remote computer. The caller of this method must
Ezio Melottibc372982010-04-25 17:48:01 +0000384 possess the :const:`SeBackupPrivilege` security privilege. Note that
Brian Curtin2d067c82010-05-11 20:35:47 +0000385 privileges are different than permissions -- see the
386 `Conflicts Between User Rights and Permissions documentation
387 <http://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__
388 for more details.
Georg Brandl116aa622007-08-15 14:28:22 +0000389
390 This function passes NULL for *security_attributes* to the API.
391
392
393.. function:: SetValue(key, sub_key, type, value)
394
395 Associates a value with a specified key.
396
Brian Curtin2d067c82010-05-11 20:35:47 +0000397 *key* is an already open key, or one of the predefined
398 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000399
Ezio Melottibc372982010-04-25 17:48:01 +0000400 *sub_key* is a string that names the subkey with which the value is associated.
Georg Brandl116aa622007-08-15 14:28:22 +0000401
402 *type* is an integer that specifies the type of the data. Currently this must be
403 :const:`REG_SZ`, meaning only strings are supported. Use the :func:`SetValueEx`
404 function for support for other data types.
405
406 *value* is a string that specifies the new value.
407
408 If the key specified by the *sub_key* parameter does not exist, the SetValue
409 function creates it.
410
411 Value lengths are limited by available memory. Long values (more than 2048
412 bytes) should be stored as files with the filenames stored in the configuration
413 registry. This helps the registry perform efficiently.
414
Ezio Melottibc372982010-04-25 17:48:01 +0000415 The key identified by the *key* parameter must have been opened with
Georg Brandl116aa622007-08-15 14:28:22 +0000416 :const:`KEY_SET_VALUE` access.
417
418
419.. function:: SetValueEx(key, value_name, reserved, type, value)
420
421 Stores data in the value field of an open registry key.
422
Brian Curtin2d067c82010-05-11 20:35:47 +0000423 *key* is an already open key, or one of the predefined
424 :ref:`HKEY_* constants <hkey-constants>`.
Georg Brandl116aa622007-08-15 14:28:22 +0000425
Ezio Melottibc372982010-04-25 17:48:01 +0000426 *value_name* is a string that names the subkey with which the value is
Georg Brandl116aa622007-08-15 14:28:22 +0000427 associated.
428
Brian Curtin2d067c82010-05-11 20:35:47 +0000429 *type* is an integer that specifies the type of the data. See
430 :ref:`Value Types <value-types>` for the available types.
Georg Brandl116aa622007-08-15 14:28:22 +0000431
Ezio Melottibc372982010-04-25 17:48:01 +0000432 *reserved* can be anything -- zero is always passed to the API.
Georg Brandl116aa622007-08-15 14:28:22 +0000433
434 *value* is a string that specifies the new value.
435
436 This method can also set additional value and type information for the specified
437 key. The key identified by the key parameter must have been opened with
438 :const:`KEY_SET_VALUE` access.
439
Ezio Melottibc372982010-04-25 17:48:01 +0000440 To open the key, use the :func:`CreateKey` or :func:`OpenKey` methods.
Georg Brandl116aa622007-08-15 14:28:22 +0000441
442 Value lengths are limited by available memory. Long values (more than 2048
443 bytes) should be stored as files with the filenames stored in the configuration
444 registry. This helps the registry perform efficiently.
445
446
Brian Curtin3035c392010-04-21 23:56:21 +0000447.. function:: DisableReflectionKey(key)
448
449 Disables registry reflection for 32-bit processes running on a 64-bit
Georg Brandl8173fb32010-05-19 21:03:51 +0000450 operating system.
Brian Curtin3035c392010-04-21 23:56:21 +0000451
Georg Brandl8173fb32010-05-19 21:03:51 +0000452 *key* is an already open key, or one of the predefined :ref:`HKEY_* constants
453 <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000454
Georg Brandl8173fb32010-05-19 21:03:51 +0000455 Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating
456 system.
Brian Curtin3035c392010-04-21 23:56:21 +0000457
458 If the key is not on the reflection list, the function succeeds but has no
Georg Brandl8173fb32010-05-19 21:03:51 +0000459 effect. Disabling reflection for a key does not affect reflection of any
Brian Curtin3035c392010-04-21 23:56:21 +0000460 subkeys.
461
462
463.. function:: EnableReflectionKey(key)
464
465 Restores registry reflection for the specified disabled key.
466
Georg Brandl8173fb32010-05-19 21:03:51 +0000467 *key* is an already open key, or one of the predefined :ref:`HKEY_* constants
468 <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000469
Georg Brandl8173fb32010-05-19 21:03:51 +0000470 Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating
471 system.
Brian Curtin3035c392010-04-21 23:56:21 +0000472
473 Restoring reflection for a key does not affect reflection of any subkeys.
474
475
476.. function:: QueryReflectionKey(key)
477
478 Determines the reflection state for the specified key.
479
Brian Curtin2d067c82010-05-11 20:35:47 +0000480 *key* is an already open key, or one of the predefined
481 :ref:`HKEY_* constants <hkey-constants>`.
Brian Curtin3035c392010-04-21 23:56:21 +0000482
483 Returns ``True`` if reflection is disabled.
484
485 Will generally raise :exc:`NotImplemented` if executed on a 32-bit
Georg Brandl8173fb32010-05-19 21:03:51 +0000486 operating system.
Brian Curtin3035c392010-04-21 23:56:21 +0000487
488
Brian Curtin2d067c82010-05-11 20:35:47 +0000489.. _constants:
490
491Constants
492------------------
493
494The following constants are defined for use in many :mod:`_winreg` functions.
495
496.. _hkey-constants:
497
498HKEY_* Constants
499++++++++++++++++
500
501.. data:: HKEY_CLASSES_ROOT
502
503 Registry entries subordinate to this key define types (or classes) of
504 documents and the properties associated with those types. Shell and
505 COM applications use the information stored under this key.
506
507
508.. data:: HKEY_CURRENT_USER
509
510 Registry entries subordinate to this key define the preferences of
511 the current user. These preferences include the settings of
512 environment variables, data about program groups, colors, printers,
513 network connections, and application preferences.
514
515.. data:: HKEY_LOCAL_MACHINE
516
517 Registry entries subordinate to this key define the physical state
518 of the computer, including data about the bus type, system memory,
519 and installed hardware and software.
520
521.. data:: HKEY_USERS
522
523 Registry entries subordinate to this key define the default user
524 configuration for new users on the local computer and the user
525 configuration for the current user.
526
527.. data:: HKEY_PERFORMANCE_DATA
528
529 Registry entries subordinate to this key allow you to access
530 performance data. The data is not actually stored in the registry;
531 the registry functions cause the system to collect the data from
532 its source.
533
534
535.. data:: HKEY_CURRENT_CONFIG
536
537 Contains information about the current hardware profile of the
538 local computer system.
539
540.. data:: HKEY_DYN_DATA
541
542 This key is not used in versions of Windows after 98.
543
544
545.. _access-rights:
546
547Access Rights
548+++++++++++++
549
550For more information, see `Registry Key Security and Access
551<http://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__.
552
553.. data:: KEY_ALL_ACCESS
554
555 Combines the STANDARD_RIGHTS_REQUIRED, :const:`KEY_QUERY_VALUE`,
556 :const:`KEY_SET_VALUE`, :const:`KEY_CREATE_SUB_KEY`,
557 :const:`KEY_ENUMERATE_SUB_KEYS`, :const:`KEY_NOTIFY`,
558 and :const:`KEY_CREATE_LINK` access rights.
559
560.. data:: KEY_WRITE
561
562 Combines the STANDARD_RIGHTS_WRITE, :const:`KEY_SET_VALUE`, and
563 :const:`KEY_CREATE_SUB_KEY` access rights.
564
565.. data:: KEY_READ
566
567 Combines the STANDARD_RIGHTS_READ, :const:`KEY_QUERY_VALUE`,
568 :const:`KEY_ENUMERATE_SUB_KEYS`, and :const:`KEY_NOTIFY` values.
569
570.. data:: KEY_EXECUTE
571
572 Equivalent to :const:`KEY_READ`.
573
574.. data:: KEY_QUERY_VALUE
575
576 Required to query the values of a registry key.
577
578.. data:: KEY_SET_VALUE
579
580 Required to create, delete, or set a registry value.
581
582.. data:: KEY_CREATE_SUB_KEY
583
584 Required to create a subkey of a registry key.
585
586.. data:: KEY_ENUMERATE_SUB_KEYS
587
588 Required to enumerate the subkeys of a registry key.
589
590.. data:: KEY_NOTIFY
591
592 Required to request change notifications for a registry key or for
593 subkeys of a registry key.
594
595.. data:: KEY_CREATE_LINK
596
597 Reserved for system use.
598
599
600.. _64-bit-access-rights:
601
60264-bit Specific
603***************
604
Georg Brandl6faee4e2010-09-21 14:48:28 +0000605For more information, see `Accessing an Alternate Registry View
Brian Curtin2d067c82010-05-11 20:35:47 +0000606<http://msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspx>`__.
607
608.. data:: KEY_WOW64_64KEY
609
610 Indicates that an application on 64-bit Windows should operate on
611 the 64-bit registry view.
612
613.. data:: KEY_WOW64_32KEY
614
615 Indicates that an application on 64-bit Windows should operate on
616 the 32-bit registry view.
617
618
619.. _value-types:
620
621Value Types
622+++++++++++
623
624For more information, see `Registry Value Types
625<http://msdn.microsoft.com/en-us/library/ms724884%28v=VS.85%29.aspx>`__.
626
627.. data:: REG_BINARY
628
629 Binary data in any form.
630
631.. data:: REG_DWORD
632
633 32-bit number.
634
635.. data:: REG_DWORD_LITTLE_ENDIAN
636
637 A 32-bit number in little-endian format.
638
639.. data:: REG_DWORD_BIG_ENDIAN
640
641 A 32-bit number in big-endian format.
642
643.. data:: REG_EXPAND_SZ
644
645 Null-terminated string containing references to environment
646 variables (``%PATH%``).
647
648.. data:: REG_LINK
649
650 A Unicode symbolic link.
651
652.. data:: REG_MULTI_SZ
653
654 A sequence of null-terminated strings, terminated by two null characters.
655 (Python handles this termination automatically.)
656
657.. data:: REG_NONE
658
659 No defined value type.
660
661.. data:: REG_RESOURCE_LIST
662
663 A device-driver resource list.
664
665.. data:: REG_FULL_RESOURCE_DESCRIPTOR
666
667 A hardware setting.
668
669.. data:: REG_RESOURCE_REQUIREMENTS_LIST
670
671 A hardware resource list.
672
673.. data:: REG_SZ
674
675 A null-terminated string.
676
677
Georg Brandl116aa622007-08-15 14:28:22 +0000678.. _handle-object:
679
680Registry Handle Objects
681-----------------------
682
683This object wraps a Windows HKEY object, automatically closing it when the
684object is destroyed. To guarantee cleanup, you can call either the
Georg Brandl8173fb32010-05-19 21:03:51 +0000685:meth:`~PyHKEY.Close` method on the object, or the :func:`CloseKey` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000686
687All registry functions in this module return one of these objects.
688
Ezio Melottibc372982010-04-25 17:48:01 +0000689All registry functions in this module which accept a handle object also accept
690an integer, however, use of the handle object is encouraged.
Georg Brandl116aa622007-08-15 14:28:22 +0000691
Ezio Melottibc372982010-04-25 17:48:01 +0000692Handle objects provide semantics for :meth:`__bool__` -- thus ::
Georg Brandl116aa622007-08-15 14:28:22 +0000693
694 if handle:
Georg Brandl6911e3c2007-09-04 07:15:32 +0000695 print("Yes")
Georg Brandl116aa622007-08-15 14:28:22 +0000696
697will print ``Yes`` if the handle is currently valid (has not been closed or
698detached).
699
700The object also support comparison semantics, so handle objects will compare
701true if they both reference the same underlying Windows handle value.
702
Georg Brandl22b34312009-07-26 14:54:51 +0000703Handle objects can be converted to an integer (e.g., using the built-in
Georg Brandl116aa622007-08-15 14:28:22 +0000704:func:`int` function), in which case the underlying Windows handle value is
Georg Brandl8173fb32010-05-19 21:03:51 +0000705returned. You can also use the :meth:`~PyHKEY.Detach` method to return the
706integer handle, and also disconnect the Windows handle from the handle object.
Georg Brandl116aa622007-08-15 14:28:22 +0000707
708
709.. method:: PyHKEY.Close()
710
711 Closes the underlying Windows handle.
712
713 If the handle is already closed, no error is raised.
714
715
716.. method:: PyHKEY.Detach()
717
718 Detaches the Windows handle from the handle object.
719
Georg Brandl5c106642007-11-29 17:41:05 +0000720 The result is an integer that holds the value of the handle before it is
721 detached. If the handle is already detached or closed, this will return
722 zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000723
724 After calling this function, the handle is effectively invalidated, but the
Ezio Melottibc372982010-04-25 17:48:01 +0000725 handle is not closed. You would call this function when you need the
726 underlying Win32 handle to exist beyond the lifetime of the handle object.
Georg Brandl116aa622007-08-15 14:28:22 +0000727
Christian Heimes2380ac72008-01-09 00:17:24 +0000728.. method:: PyHKEY.__enter__()
729 PyHKEY.__exit__(\*exc_info)
730
Georg Brandl8173fb32010-05-19 21:03:51 +0000731 The HKEY object implements :meth:`~object.__enter__` and
732 :meth:`~object.__exit__` and thus supports the context protocol for the
733 :keyword:`with` statement::
Christian Heimes2380ac72008-01-09 00:17:24 +0000734
735 with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key:
Georg Brandl8173fb32010-05-19 21:03:51 +0000736 ... # work with key
Christian Heimes2380ac72008-01-09 00:17:24 +0000737
738 will automatically close *key* when control leaves the :keyword:`with` block.
739
Christian Heimes2380ac72008-01-09 00:17:24 +0000740