~ubuntu-branches/ubuntu/trusty/python3.4/trusty-proposed

« back to all changes in this revision

Viewing changes to Doc/library/winreg.rst

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-11-25 09:44:27 UTC
  • Revision ID: package-import@ubuntu.com-20131125094427-lzxj8ap5w01lmo7f
Tags: upstream-3.4~b1
ImportĀ upstreamĀ versionĀ 3.4~b1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
:mod:`winreg` -- Windows registry access
 
2
=========================================
 
3
 
 
4
.. module:: winreg
 
5
   :platform: Windows
 
6
   :synopsis: Routines and objects for manipulating the Windows registry.
 
7
.. sectionauthor:: Mark Hammond <MarkH@ActiveState.com>
 
8
 
 
9
 
 
10
These functions expose the Windows registry API to Python.  Instead of using an
 
11
integer as the registry handle, a :ref:`handle object <handle-object>` is used
 
12
to ensure that the handles are closed correctly, even if the programmer neglects
 
13
to explicitly close them.
 
14
 
 
15
.. _exception-changed:
 
16
 
 
17
.. versionchanged:: 3.3
 
18
   Several functions in this module used to raise a
 
19
   :exc:`WindowsError`, which is now an alias of :exc:`OSError`.
 
20
 
 
21
.. _functions:
 
22
 
 
23
Functions
 
24
------------------
 
25
 
 
26
This module offers the following functions:
 
27
 
 
28
 
 
29
.. function:: CloseKey(hkey)
 
30
 
 
31
   Closes a previously opened registry key.  The *hkey* argument specifies a
 
32
   previously opened key.
 
33
 
 
34
   .. note::
 
35
 
 
36
      If *hkey* is not closed using this method (or via :meth:`hkey.Close()
 
37
      <PyHKEY.Close>`), it is closed when the *hkey* object is destroyed by
 
38
      Python.
 
39
 
 
40
 
 
41
.. function:: ConnectRegistry(computer_name, key)
 
42
 
 
43
   Establishes a connection to a predefined registry handle on another computer,
 
44
   and returns a :ref:`handle object <handle-object>`.
 
45
 
 
46
   *computer_name* is the name of the remote computer, of the form
 
47
   ``r"\\computername"``.  If ``None``, the local computer is used.
 
48
 
 
49
   *key* is the predefined handle to connect to.
 
50
 
 
51
   The return value is the handle of the opened key. If the function fails, an
 
52
   :exc:`OSError` exception is raised.
 
53
 
 
54
   .. versionchanged:: 3.3
 
55
      See :ref:`above <exception-changed>`.
 
56
 
 
57
 
 
58
.. function:: CreateKey(key, sub_key)
 
59
 
 
60
   Creates or opens the specified key, returning a
 
61
   :ref:`handle object <handle-object>`.
 
62
 
 
63
   *key* is an already open key, or one of the predefined
 
64
   :ref:`HKEY_* constants <hkey-constants>`.
 
65
 
 
66
   *sub_key* is a string that names the key this method opens or creates.
 
67
 
 
68
   If *key* is one of the predefined keys, *sub_key* may be ``None``. In that
 
69
   case, the handle returned is the same key handle passed in to the function.
 
70
 
 
71
   If the key already exists, this function opens the existing key.
 
72
 
 
73
   The return value is the handle of the opened key. If the function fails, an
 
74
   :exc:`OSError` exception is raised.
 
75
 
 
76
   .. versionchanged:: 3.3
 
77
      See :ref:`above <exception-changed>`.
 
78
 
 
79
 
 
80
.. function:: CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE)
 
81
 
 
82
   Creates or opens the specified key, returning a
 
83
   :ref:`handle object <handle-object>`.
 
84
 
 
85
   *key* is an already open key, or one of the predefined
 
86
   :ref:`HKEY_* constants <hkey-constants>`.
 
87
 
 
88
   *sub_key* is a string that names the key this method opens or creates.
 
89
 
 
90
   *reserved* is a reserved integer, and must be zero. The default is zero.
 
91
 
 
92
   *access* is an integer that specifies an access mask that describes the desired
 
93
   security access for the key.  Default is :const:`KEY_WRITE`.  See
 
94
   :ref:`Access Rights <access-rights>` for other allowed values.
 
95
 
 
96
   If *key* is one of the predefined keys, *sub_key* may be ``None``. In that
 
97
   case, the handle returned is the same key handle passed in to the function.
 
98
 
 
99
   If the key already exists, this function opens the existing key.
 
100
 
 
101
   The return value is the handle of the opened key. If the function fails, an
 
102
   :exc:`OSError` exception is raised.
 
103
 
 
104
   .. versionadded:: 3.2
 
105
 
 
106
   .. versionchanged:: 3.3
 
107
      See :ref:`above <exception-changed>`.
 
108
 
 
109
 
 
110
.. function:: DeleteKey(key, sub_key)
 
111
 
 
112
   Deletes the specified key.
 
113
 
 
114
   *key* is an already open key, or one of the predefined
 
115
   :ref:`HKEY_* constants <hkey-constants>`.
 
116
 
 
117
   *sub_key* is a string that must be a subkey of the key identified by the *key*
 
118
   parameter.  This value must not be ``None``, and the key may not have subkeys.
 
119
 
 
120
   *This method can not delete keys with subkeys.*
 
121
 
 
122
   If the method succeeds, the entire key, including all of its values, is removed.
 
123
   If the method fails, an :exc:`OSError` exception is raised.
 
124
 
 
125
   .. versionchanged:: 3.3
 
126
      See :ref:`above <exception-changed>`.
 
127
 
 
128
 
 
129
.. function:: DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0)
 
130
 
 
131
   Deletes the specified key.
 
132
 
 
133
   .. note::
 
134
      The :func:`DeleteKeyEx` function is implemented with the RegDeleteKeyEx
 
135
      Windows API function, which is specific to 64-bit versions of Windows.
 
136
      See the `RegDeleteKeyEx documentation
 
137
      <http://msdn.microsoft.com/en-us/library/ms724847%28VS.85%29.aspx>`__.
 
138
 
 
139
   *key* is an already open key, or one of the predefined
 
140
   :ref:`HKEY_* constants <hkey-constants>`.
 
141
 
 
142
   *sub_key* is a string that must be a subkey of the key identified by the
 
143
   *key* parameter. This value must not be ``None``, and the key may not have
 
144
   subkeys.
 
145
 
 
146
   *reserved* is a reserved integer, and must be zero. The default is zero.
 
147
 
 
148
   *access* is an integer that specifies an access mask that describes the desired
 
149
   security access for the key.  Default is :const:`KEY_ALL_ACCESS`.  See
 
150
   :ref:`Access Rights <access-rights>` for other allowed values.
 
151
 
 
152
   *This method can not delete keys with subkeys.*
 
153
 
 
154
   If the method succeeds, the entire key, including all of its values, is
 
155
   removed. If the method fails, an :exc:`OSError` exception is raised.
 
156
 
 
157
   On unsupported Windows versions, :exc:`NotImplementedError` is raised.
 
158
 
 
159
   .. versionadded:: 3.2
 
160
 
 
161
   .. versionchanged:: 3.3
 
162
      See :ref:`above <exception-changed>`.
 
163
 
 
164
 
 
165
.. function:: DeleteValue(key, value)
 
166
 
 
167
   Removes a named value from a registry key.
 
168
 
 
169
   *key* is an already open key, or one of the predefined
 
170
   :ref:`HKEY_* constants <hkey-constants>`.
 
171
 
 
172
   *value* is a string that identifies the value to remove.
 
173
 
 
174
 
 
175
.. function:: EnumKey(key, index)
 
176
 
 
177
   Enumerates subkeys of an open registry key, returning a string.
 
178
 
 
179
   *key* is an already open key, or one of the predefined
 
180
   :ref:`HKEY_* constants <hkey-constants>`.
 
181
 
 
182
   *index* is an integer that identifies the index of the key to retrieve.
 
183
 
 
184
   The function retrieves the name of one subkey each time it is called.  It is
 
185
   typically called repeatedly until an :exc:`OSError` exception is
 
186
   raised, indicating, no more values are available.
 
187
 
 
188
   .. versionchanged:: 3.3
 
189
      See :ref:`above <exception-changed>`.
 
190
 
 
191
 
 
192
.. function:: EnumValue(key, index)
 
193
 
 
194
   Enumerates values of an open registry key, returning a tuple.
 
195
 
 
196
   *key* is an already open key, or one of the predefined
 
197
   :ref:`HKEY_* constants <hkey-constants>`.
 
198
 
 
199
   *index* is an integer that identifies the index of the value to retrieve.
 
200
 
 
201
   The function retrieves the name of one subkey each time it is called. It is
 
202
   typically called repeatedly, until an :exc:`OSError` exception is
 
203
   raised, indicating no more values.
 
204
 
 
205
   The result is a tuple of 3 items:
 
206
 
 
207
   +-------+--------------------------------------------+
 
208
   | Index | Meaning                                    |
 
209
   +=======+============================================+
 
210
   | ``0`` | A string that identifies the value name    |
 
211
   +-------+--------------------------------------------+
 
212
   | ``1`` | An object that holds the value data, and   |
 
213
   |       | whose type depends on the underlying       |
 
214
   |       | registry type                              |
 
215
   +-------+--------------------------------------------+
 
216
   | ``2`` | An integer that identifies the type of the |
 
217
   |       | value data (see table in docs for          |
 
218
   |       | :meth:`SetValueEx`)                        |
 
219
   +-------+--------------------------------------------+
 
220
 
 
221
   .. versionchanged:: 3.3
 
222
      See :ref:`above <exception-changed>`.
 
223
 
 
224
 
 
225
.. function:: ExpandEnvironmentStrings(str)
 
226
 
 
227
   Expands environment variable placeholders ``%NAME%`` in strings like
 
228
   :const:`REG_EXPAND_SZ`::
 
229
 
 
230
      >>> ExpandEnvironmentStrings('%windir%')
 
231
      'C:\\Windows'
 
232
 
 
233
 
 
234
.. function:: FlushKey(key)
 
235
 
 
236
   Writes all the attributes of a key to the registry.
 
237
 
 
238
   *key* is an already open key, or one of the predefined
 
239
   :ref:`HKEY_* constants <hkey-constants>`.
 
240
 
 
241
   It is not necessary to call :func:`FlushKey` to change a key. Registry changes are
 
242
   flushed to disk by the registry using its lazy flusher.  Registry changes are
 
243
   also flushed to disk at system shutdown.  Unlike :func:`CloseKey`, the
 
244
   :func:`FlushKey` method returns only when all the data has been written to the
 
245
   registry. An application should only call :func:`FlushKey` if it requires
 
246
   absolute certainty that registry changes are on disk.
 
247
 
 
248
   .. note::
 
249
 
 
250
      If you don't know whether a :func:`FlushKey` call is required, it probably
 
251
      isn't.
 
252
 
 
253
 
 
254
.. function:: LoadKey(key, sub_key, file_name)
 
255
 
 
256
   Creates a subkey under the specified key and stores registration information
 
257
   from a specified file into that subkey.
 
258
 
 
259
   *key* is a handle returned by :func:`ConnectRegistry` or one of the constants
 
260
   :const:`HKEY_USERS` or :const:`HKEY_LOCAL_MACHINE`.
 
261
 
 
262
   *sub_key* is a string that identifies the subkey to load.
 
263
 
 
264
   *file_name* is the name of the file to load registry data from. This file must
 
265
   have been created with the :func:`SaveKey` function. Under the file allocation
 
266
   table (FAT) file system, the filename may not have an extension.
 
267
 
 
268
   A call to :func:`LoadKey` fails if the calling process does not have the
 
269
   :const:`SE_RESTORE_PRIVILEGE` privilege.  Note that privileges are different
 
270
   from permissions -- see the `RegLoadKey documentation
 
271
   <http://msdn.microsoft.com/en-us/library/ms724889%28v=VS.85%29.aspx>`__ for
 
272
   more details.
 
273
 
 
274
   If *key* is a handle returned by :func:`ConnectRegistry`, then the path
 
275
   specified in *file_name* is relative to the remote computer.
 
276
 
 
277
 
 
278
.. function:: OpenKey(key, sub_key, reserved=0, access=KEY_READ)
 
279
              OpenKeyEx(key, sub_key, reserved=0, access=KEY_READ)
 
280
 
 
281
   Opens the specified key, returning a :ref:`handle object <handle-object>`.
 
282
 
 
283
   *key* is an already open key, or one of the predefined
 
284
   :ref:`HKEY_* constants <hkey-constants>`.
 
285
 
 
286
   *sub_key* is a string that identifies the sub_key to open.
 
287
 
 
288
   *reserved* is a reserved integer, and must be zero.  The default is zero.
 
289
 
 
290
   *access* is an integer that specifies an access mask that describes the desired
 
291
   security access for the key.  Default is :const:`KEY_READ`.  See :ref:`Access
 
292
   Rights <access-rights>` for other allowed values.
 
293
 
 
294
   The result is a new handle to the specified key.
 
295
 
 
296
   If the function fails, :exc:`OSError` is raised.
 
297
 
 
298
   .. versionchanged:: 3.2
 
299
      Allow the use of named arguments.
 
300
 
 
301
   .. versionchanged:: 3.3
 
302
      See :ref:`above <exception-changed>`.
 
303
 
 
304
 
 
305
.. function:: QueryInfoKey(key)
 
306
 
 
307
   Returns information about a key, as a tuple.
 
308
 
 
309
   *key* is an already open key, or one of the predefined
 
310
   :ref:`HKEY_* constants <hkey-constants>`.
 
311
 
 
312
   The result is a tuple of 3 items:
 
313
 
 
314
   +-------+---------------------------------------------+
 
315
   | Index | Meaning                                     |
 
316
   +=======+=============================================+
 
317
   | ``0`` | An integer giving the number of sub keys    |
 
318
   |       | this key has.                               |
 
319
   +-------+---------------------------------------------+
 
320
   | ``1`` | An integer giving the number of values this |
 
321
   |       | key has.                                    |
 
322
   +-------+---------------------------------------------+
 
323
   | ``2`` | An integer giving when the key was last     |
 
324
   |       | modified (if available) as 100's of         |
 
325
   |       | nanoseconds since Jan 1, 1600.              |
 
326
   +-------+---------------------------------------------+
 
327
 
 
328
 
 
329
.. function:: QueryValue(key, sub_key)
 
330
 
 
331
   Retrieves the unnamed value for a key, as a string.
 
332
 
 
333
   *key* is an already open key, or one of the predefined
 
334
   :ref:`HKEY_* constants <hkey-constants>`.
 
335
 
 
336
   *sub_key* is a string that holds the name of the subkey with which the value is
 
337
   associated.  If this parameter is ``None`` or empty, the function retrieves the
 
338
   value set by the :func:`SetValue` method for the key identified by *key*.
 
339
 
 
340
   Values in the registry have name, type, and data components. This method
 
341
   retrieves the data for a key's first value that has a NULL name. But the
 
342
   underlying API call doesn't return the type, so always use
 
343
   :func:`QueryValueEx` if possible.
 
344
 
 
345
 
 
346
.. function:: QueryValueEx(key, value_name)
 
347
 
 
348
   Retrieves the type and data for a specified value name associated with
 
349
   an open registry key.
 
350
 
 
351
   *key* is an already open key, or one of the predefined
 
352
   :ref:`HKEY_* constants <hkey-constants>`.
 
353
 
 
354
   *value_name* is a string indicating the value to query.
 
355
 
 
356
   The result is a tuple of 2 items:
 
357
 
 
358
   +-------+-----------------------------------------+
 
359
   | Index | Meaning                                 |
 
360
   +=======+=========================================+
 
361
   | ``0`` | The value of the registry item.         |
 
362
   +-------+-----------------------------------------+
 
363
   | ``1`` | An integer giving the registry type for |
 
364
   |       | this value (see table in docs for       |
 
365
   |       | :meth:`SetValueEx`)                     |
 
366
   +-------+-----------------------------------------+
 
367
 
 
368
 
 
369
.. function:: SaveKey(key, file_name)
 
370
 
 
371
   Saves the specified key, and all its subkeys to the specified file.
 
372
 
 
373
   *key* is an already open key, or one of the predefined
 
374
   :ref:`HKEY_* constants <hkey-constants>`.
 
375
 
 
376
   *file_name* is the name of the file to save registry data to.  This file
 
377
   cannot already exist. If this filename includes an extension, it cannot be
 
378
   used on file allocation table (FAT) file systems by the :meth:`LoadKey`
 
379
   method.
 
380
 
 
381
   If *key* represents a key on a remote computer, the path described by
 
382
   *file_name* is relative to the remote computer. The caller of this method must
 
383
   possess the :const:`SeBackupPrivilege` security privilege.  Note that
 
384
   privileges are different than permissions -- see the
 
385
   `Conflicts Between User Rights and Permissions documentation
 
386
   <http://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__
 
387
   for more details.
 
388
 
 
389
   This function passes NULL for *security_attributes* to the API.
 
390
 
 
391
 
 
392
.. function:: SetValue(key, sub_key, type, value)
 
393
 
 
394
   Associates a value with a specified key.
 
395
 
 
396
   *key* is an already open key, or one of the predefined
 
397
   :ref:`HKEY_* constants <hkey-constants>`.
 
398
 
 
399
   *sub_key* is a string that names the subkey with which the value is associated.
 
400
 
 
401
   *type* is an integer that specifies the type of the data. Currently this must be
 
402
   :const:`REG_SZ`, meaning only strings are supported.  Use the :func:`SetValueEx`
 
403
   function for support for other data types.
 
404
 
 
405
   *value* is a string that specifies the new value.
 
406
 
 
407
   If the key specified by the *sub_key* parameter does not exist, the SetValue
 
408
   function creates it.
 
409
 
 
410
   Value lengths are limited by available memory. Long values (more than 2048
 
411
   bytes) should be stored as files with the filenames stored in the configuration
 
412
   registry.  This helps the registry perform efficiently.
 
413
 
 
414
   The key identified by the *key* parameter must have been opened with
 
415
   :const:`KEY_SET_VALUE` access.
 
416
 
 
417
 
 
418
.. function:: SetValueEx(key, value_name, reserved, type, value)
 
419
 
 
420
   Stores data in the value field of an open registry key.
 
421
 
 
422
   *key* is an already open key, or one of the predefined
 
423
   :ref:`HKEY_* constants <hkey-constants>`.
 
424
 
 
425
   *value_name* is a string that names the subkey with which the value is
 
426
   associated.
 
427
 
 
428
   *reserved* can be anything -- zero is always passed to the API.
 
429
 
 
430
   *type* is an integer that specifies the type of the data. See
 
431
   :ref:`Value Types <value-types>` for the available types.
 
432
 
 
433
   *value* is a string that specifies the new value.
 
434
 
 
435
   This method can also set additional value and type information for the specified
 
436
   key.  The key identified by the key parameter must have been opened with
 
437
   :const:`KEY_SET_VALUE` access.
 
438
 
 
439
   To open the key, use the :func:`CreateKey` or :func:`OpenKey` methods.
 
440
 
 
441
   Value lengths are limited by available memory. Long values (more than 2048
 
442
   bytes) should be stored as files with the filenames stored in the configuration
 
443
   registry.  This helps the registry perform efficiently.
 
444
 
 
445
 
 
446
.. function:: DisableReflectionKey(key)
 
447
 
 
448
   Disables registry reflection for 32-bit processes running on a 64-bit
 
449
   operating system.
 
450
 
 
451
   *key* is an already open key, or one of the predefined :ref:`HKEY_* constants
 
452
   <hkey-constants>`.
 
453
 
 
454
   Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating
 
455
   system.
 
456
 
 
457
   If the key is not on the reflection list, the function succeeds but has no
 
458
   effect.  Disabling reflection for a key does not affect reflection of any
 
459
   subkeys.
 
460
 
 
461
 
 
462
.. function:: EnableReflectionKey(key)
 
463
 
 
464
   Restores registry reflection for the specified disabled key.
 
465
 
 
466
   *key* is an already open key, or one of the predefined :ref:`HKEY_* constants
 
467
   <hkey-constants>`.
 
468
 
 
469
   Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating
 
470
   system.
 
471
 
 
472
   Restoring reflection for a key does not affect reflection of any subkeys.
 
473
 
 
474
 
 
475
.. function:: QueryReflectionKey(key)
 
476
 
 
477
   Determines the reflection state for the specified key.
 
478
 
 
479
   *key* is an already open key, or one of the predefined
 
480
   :ref:`HKEY_* constants <hkey-constants>`.
 
481
 
 
482
   Returns ``True`` if reflection is disabled.
 
483
 
 
484
   Will generally raise :exc:`NotImplemented` if executed on a 32-bit
 
485
   operating system.
 
486
 
 
487
 
 
488
.. _constants:
 
489
 
 
490
Constants
 
491
------------------
 
492
 
 
493
The following constants are defined for use in many :mod:`_winreg` functions.
 
494
 
 
495
.. _hkey-constants:
 
496
 
 
497
HKEY_* Constants
 
498
++++++++++++++++
 
499
 
 
500
.. data:: HKEY_CLASSES_ROOT
 
501
 
 
502
   Registry entries subordinate to this key define types (or classes) of
 
503
   documents and the properties associated with those types. Shell and
 
504
   COM applications use the information stored under this key.
 
505
 
 
506
 
 
507
.. data:: HKEY_CURRENT_USER
 
508
 
 
509
   Registry entries subordinate to this key define the preferences of
 
510
   the current user. These preferences include the settings of
 
511
   environment variables, data about program groups, colors, printers,
 
512
   network connections, and application preferences.
 
513
 
 
514
.. data:: HKEY_LOCAL_MACHINE
 
515
 
 
516
   Registry entries subordinate to this key define the physical state
 
517
   of the computer, including data about the bus type, system memory,
 
518
   and installed hardware and software.
 
519
 
 
520
.. data:: HKEY_USERS
 
521
 
 
522
   Registry entries subordinate to this key define the default user
 
523
   configuration for new users on the local computer and the user
 
524
   configuration for the current user.
 
525
 
 
526
.. data:: HKEY_PERFORMANCE_DATA
 
527
 
 
528
   Registry entries subordinate to this key allow you to access
 
529
   performance data. The data is not actually stored in the registry;
 
530
   the registry functions cause the system to collect the data from
 
531
   its source.
 
532
 
 
533
 
 
534
.. data:: HKEY_CURRENT_CONFIG
 
535
 
 
536
   Contains information about the current hardware profile of the
 
537
   local computer system.
 
538
 
 
539
.. data:: HKEY_DYN_DATA
 
540
 
 
541
   This key is not used in versions of Windows after 98.
 
542
 
 
543
 
 
544
.. _access-rights:
 
545
 
 
546
Access Rights
 
547
+++++++++++++
 
548
 
 
549
For more information, see `Registry Key Security and Access
 
550
<http://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__.
 
551
 
 
552
.. data:: KEY_ALL_ACCESS
 
553
 
 
554
   Combines the STANDARD_RIGHTS_REQUIRED, :const:`KEY_QUERY_VALUE`,
 
555
   :const:`KEY_SET_VALUE`, :const:`KEY_CREATE_SUB_KEY`,
 
556
   :const:`KEY_ENUMERATE_SUB_KEYS`, :const:`KEY_NOTIFY`,
 
557
   and :const:`KEY_CREATE_LINK` access rights.
 
558
 
 
559
.. data:: KEY_WRITE
 
560
 
 
561
   Combines the STANDARD_RIGHTS_WRITE, :const:`KEY_SET_VALUE`, and
 
562
   :const:`KEY_CREATE_SUB_KEY` access rights.
 
563
 
 
564
.. data:: KEY_READ
 
565
 
 
566
   Combines the STANDARD_RIGHTS_READ, :const:`KEY_QUERY_VALUE`,
 
567
   :const:`KEY_ENUMERATE_SUB_KEYS`, and :const:`KEY_NOTIFY` values.
 
568
 
 
569
.. data:: KEY_EXECUTE
 
570
 
 
571
   Equivalent to :const:`KEY_READ`.
 
572
 
 
573
.. data:: KEY_QUERY_VALUE
 
574
 
 
575
   Required to query the values of a registry key.
 
576
 
 
577
.. data:: KEY_SET_VALUE
 
578
 
 
579
   Required to create, delete, or set a registry value.
 
580
 
 
581
.. data:: KEY_CREATE_SUB_KEY
 
582
 
 
583
   Required to create a subkey of a registry key.
 
584
 
 
585
.. data:: KEY_ENUMERATE_SUB_KEYS
 
586
 
 
587
   Required to enumerate the subkeys of a registry key.
 
588
 
 
589
.. data:: KEY_NOTIFY
 
590
 
 
591
   Required to request change notifications for a registry key or for
 
592
   subkeys of a registry key.
 
593
 
 
594
.. data:: KEY_CREATE_LINK
 
595
 
 
596
   Reserved for system use.
 
597
 
 
598
 
 
599
.. _64-bit-access-rights:
 
600
 
 
601
64-bit Specific
 
602
***************
 
603
 
 
604
For more information, see `Accessing an Alternate Registry View
 
605
<http://msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspx>`__.
 
606
 
 
607
.. data:: KEY_WOW64_64KEY
 
608
 
 
609
   Indicates that an application on 64-bit Windows should operate on
 
610
   the 64-bit registry view.
 
611
 
 
612
.. data:: KEY_WOW64_32KEY
 
613
 
 
614
   Indicates that an application on 64-bit Windows should operate on
 
615
   the 32-bit registry view.
 
616
 
 
617
 
 
618
.. _value-types:
 
619
 
 
620
Value Types
 
621
+++++++++++
 
622
 
 
623
For more information, see `Registry Value Types
 
624
<http://msdn.microsoft.com/en-us/library/ms724884%28v=VS.85%29.aspx>`__.
 
625
 
 
626
.. data:: REG_BINARY
 
627
 
 
628
   Binary data in any form.
 
629
 
 
630
.. data:: REG_DWORD
 
631
 
 
632
   32-bit number.
 
633
 
 
634
.. data:: REG_DWORD_LITTLE_ENDIAN
 
635
 
 
636
   A 32-bit number in little-endian format.
 
637
 
 
638
.. data:: REG_DWORD_BIG_ENDIAN
 
639
 
 
640
   A 32-bit number in big-endian format.
 
641
 
 
642
.. data:: REG_EXPAND_SZ
 
643
 
 
644
   Null-terminated string containing references to environment
 
645
   variables (``%PATH%``).
 
646
 
 
647
.. data:: REG_LINK
 
648
 
 
649
   A Unicode symbolic link.
 
650
 
 
651
.. data:: REG_MULTI_SZ
 
652
 
 
653
   A sequence of null-terminated strings, terminated by two null characters.
 
654
   (Python handles this termination automatically.)
 
655
 
 
656
.. data:: REG_NONE
 
657
 
 
658
   No defined value type.
 
659
 
 
660
.. data:: REG_RESOURCE_LIST
 
661
 
 
662
   A device-driver resource list.
 
663
 
 
664
.. data:: REG_FULL_RESOURCE_DESCRIPTOR
 
665
 
 
666
   A hardware setting.
 
667
 
 
668
.. data:: REG_RESOURCE_REQUIREMENTS_LIST
 
669
 
 
670
   A hardware resource list.
 
671
 
 
672
.. data:: REG_SZ
 
673
 
 
674
   A null-terminated string.
 
675
 
 
676
 
 
677
.. _handle-object:
 
678
 
 
679
Registry Handle Objects
 
680
-----------------------
 
681
 
 
682
This object wraps a Windows HKEY object, automatically closing it when the
 
683
object is destroyed.  To guarantee cleanup, you can call either the
 
684
:meth:`~PyHKEY.Close` method on the object, or the :func:`CloseKey` function.
 
685
 
 
686
All registry functions in this module return one of these objects.
 
687
 
 
688
All registry functions in this module which accept a handle object also accept
 
689
an integer, however, use of the handle object is encouraged.
 
690
 
 
691
Handle objects provide semantics for :meth:`__bool__` -- thus ::
 
692
 
 
693
   if handle:
 
694
       print("Yes")
 
695
 
 
696
will print ``Yes`` if the handle is currently valid (has not been closed or
 
697
detached).
 
698
 
 
699
The object also support comparison semantics, so handle objects will compare
 
700
true if they both reference the same underlying Windows handle value.
 
701
 
 
702
Handle objects can be converted to an integer (e.g., using the built-in
 
703
:func:`int` function), in which case the underlying Windows handle value is
 
704
returned.  You can also use the :meth:`~PyHKEY.Detach` method to return the
 
705
integer handle, and also disconnect the Windows handle from the handle object.
 
706
 
 
707
 
 
708
.. method:: PyHKEY.Close()
 
709
 
 
710
   Closes the underlying Windows handle.
 
711
 
 
712
   If the handle is already closed, no error is raised.
 
713
 
 
714
 
 
715
.. method:: PyHKEY.Detach()
 
716
 
 
717
   Detaches the Windows handle from the handle object.
 
718
 
 
719
   The result is an integer that holds the value of the handle before it is
 
720
   detached.  If the handle is already detached or closed, this will return
 
721
   zero.
 
722
 
 
723
   After calling this function, the handle is effectively invalidated, but the
 
724
   handle is not closed.  You would call this function when you need the
 
725
   underlying Win32 handle to exist beyond the lifetime of the handle object.
 
726
 
 
727
.. method:: PyHKEY.__enter__()
 
728
            PyHKEY.__exit__(\*exc_info)
 
729
 
 
730
   The HKEY object implements :meth:`~object.__enter__` and
 
731
   :meth:`~object.__exit__` and thus supports the context protocol for the
 
732
   :keyword:`with` statement::
 
733
 
 
734
      with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key:
 
735
          ...  # work with key
 
736
 
 
737
   will automatically close *key* when control leaves the :keyword:`with` block.
 
738
 
 
739