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 8.. sectionauthor:: Mark Hammond <MarkH@ActiveState.com> 9 10-------------- 11 12These functions expose the Windows registry API to Python. Instead of using an 13integer 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. 16 17.. _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 28This module offers the following functions: 29 30 31.. function:: CloseKey(hkey) 32 33 Closes a previously opened registry key. The *hkey* argument specifies a 34 previously opened key. 35 36 .. note:: 37 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. 41 42 43.. function:: ConnectRegistry(computer_name, key) 44 45 Establishes a connection to a predefined registry handle on another computer, 46 and returns a :ref:`handle object <handle-object>`. 47 48 *computer_name* is the name of the remote computer, of the form 49 ``r"\\computername"``. If ``None``, the local computer is used. 50 51 *key* is the predefined handle to connect to. 52 53 The return value is the handle of the opened key. If the function fails, an 54 :exc:`OSError` exception is raised. 55 56 .. versionchanged:: 3.3 57 See :ref:`above <exception-changed>`. 58 59 60.. function:: CreateKey(key, sub_key) 61 62 Creates or opens the specified key, returning a 63 :ref:`handle object <handle-object>`. 64 65 *key* is an already open key, or one of the predefined 66 :ref:`HKEY_* constants <hkey-constants>`. 67 68 *sub_key* is a string that names the key this method opens or creates. 69 70 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. 72 73 If the key already exists, this function opens the existing key. 74 75 The return value is the handle of the opened key. If the function fails, an 76 :exc:`OSError` exception is raised. 77 78 .. versionchanged:: 3.3 79 See :ref:`above <exception-changed>`. 80 81 82.. function:: CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE) 83 84 Creates or opens the specified key, returning a 85 :ref:`handle object <handle-object>`. 86 87 *key* is an already open key, or one of the predefined 88 :ref:`HKEY_* constants <hkey-constants>`. 89 90 *sub_key* is a string that names the key this method opens or creates. 91 92 *reserved* is a reserved integer, and must be zero. The default is zero. 93 94 *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 96 :ref:`Access Rights <access-rights>` for other allowed values. 97 98 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. 100 101 If the key already exists, this function opens the existing key. 102 103 The return value is the handle of the opened key. If the function fails, an 104 :exc:`OSError` exception is raised. 105 106 .. versionadded:: 3.2 107 108 .. versionchanged:: 3.3 109 See :ref:`above <exception-changed>`. 110 111 112.. function:: DeleteKey(key, sub_key) 113 114 Deletes the specified key. 115 116 *key* is an already open key, or one of the predefined 117 :ref:`HKEY_* constants <hkey-constants>`. 118 119 *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. 121 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. 125 If the method fails, an :exc:`OSError` exception is raised. 126 127 .. versionchanged:: 3.3 128 See :ref:`above <exception-changed>`. 129 130 131.. function:: DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0) 132 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. 138 See the `RegDeleteKeyEx documentation 139 <https://msdn.microsoft.com/en-us/library/ms724847%28VS.85%29.aspx>`__. 140 141 *key* is an already open key, or one of the predefined 142 :ref:`HKEY_* constants <hkey-constants>`. 143 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 148 *reserved* is a reserved integer, and must be zero. The default is zero. 149 150 *access* is an integer that specifies an access mask that describes the desired 151 security access for the key. Default is :const:`KEY_WOW64_64KEY`. See 152 :ref:`Access Rights <access-rights>` for other allowed values. 153 154 *This method can not delete keys with subkeys.* 155 156 If the method succeeds, the entire key, including all of its values, is 157 removed. If the method fails, an :exc:`OSError` exception is raised. 158 159 On unsupported Windows versions, :exc:`NotImplementedError` is raised. 160 161 .. versionadded:: 3.2 162 163 .. versionchanged:: 3.3 164 See :ref:`above <exception-changed>`. 165 166 167.. function:: DeleteValue(key, value) 168 169 Removes a named value from a registry key. 170 171 *key* is an already open key, or one of the predefined 172 :ref:`HKEY_* constants <hkey-constants>`. 173 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 181 *key* is an already open key, or one of the predefined 182 :ref:`HKEY_* constants <hkey-constants>`. 183 184 *index* is an integer that identifies the index of the key to retrieve. 185 186 The function retrieves the name of one subkey each time it is called. It is 187 typically called repeatedly until an :exc:`OSError` exception is 188 raised, indicating, no more values are available. 189 190 .. versionchanged:: 3.3 191 See :ref:`above <exception-changed>`. 192 193 194.. function:: EnumValue(key, index) 195 196 Enumerates values of an open registry key, returning a tuple. 197 198 *key* is an already open key, or one of the predefined 199 :ref:`HKEY_* constants <hkey-constants>`. 200 201 *index* is an integer that identifies the index of the value to retrieve. 202 203 The function retrieves the name of one subkey each time it is called. It is 204 typically called repeatedly, until an :exc:`OSError` exception is 205 raised, indicating no more values. 206 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 | 219 | | value data (see table in docs for | 220 | | :meth:`SetValueEx`) | 221 +-------+--------------------------------------------+ 222 223 .. versionchanged:: 3.3 224 See :ref:`above <exception-changed>`. 225 226 227.. index:: 228 single: % (percent); environment variables expansion (Windows) 229 230.. function:: ExpandEnvironmentStrings(str) 231 232 Expands environment variable placeholders ``%NAME%`` in strings like 233 :const:`REG_EXPAND_SZ`:: 234 235 >>> ExpandEnvironmentStrings('%windir%') 236 'C:\\Windows' 237 238 239.. function:: FlushKey(key) 240 241 Writes all the attributes of a key to the registry. 242 243 *key* is an already open key, or one of the predefined 244 :ref:`HKEY_* constants <hkey-constants>`. 245 246 It is not necessary to call :func:`FlushKey` to change a key. Registry changes are 247 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 250 registry. An application should only call :func:`FlushKey` if it requires 251 absolute certainty that registry changes are on disk. 252 253 .. note:: 254 255 If you don't know whether a :func:`FlushKey` call is required, it probably 256 isn't. 257 258 259.. function:: LoadKey(key, sub_key, file_name) 260 261 Creates a subkey under the specified key and stores registration information 262 from a specified file into that subkey. 263 264 *key* is a handle returned by :func:`ConnectRegistry` or one of the constants 265 :const:`HKEY_USERS` or :const:`HKEY_LOCAL_MACHINE`. 266 267 *sub_key* is a string that identifies the subkey to load. 268 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 273 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 275 from permissions -- see the `RegLoadKey documentation 276 <https://msdn.microsoft.com/en-us/library/ms724889%28v=VS.85%29.aspx>`__ for 277 more details. 278 279 If *key* is a handle returned by :func:`ConnectRegistry`, then the path 280 specified in *file_name* is relative to the remote computer. 281 282 283.. function:: OpenKey(key, sub_key, reserved=0, access=KEY_READ) 284 OpenKeyEx(key, sub_key, reserved=0, access=KEY_READ) 285 286 Opens the specified key, returning a :ref:`handle object <handle-object>`. 287 288 *key* is an already open key, or one of the predefined 289 :ref:`HKEY_* constants <hkey-constants>`. 290 291 *sub_key* is a string that identifies the sub_key to open. 292 293 *reserved* is a reserved integer, and must be zero. The default is zero. 294 295 *access* is an integer that specifies an access mask that describes the desired 296 security access for the key. Default is :const:`KEY_READ`. See :ref:`Access 297 Rights <access-rights>` for other allowed values. 298 299 The result is a new handle to the specified key. 300 301 If the function fails, :exc:`OSError` is raised. 302 303 .. versionchanged:: 3.2 304 Allow the use of named arguments. 305 306 .. versionchanged:: 3.3 307 See :ref:`above <exception-changed>`. 308 309 310.. function:: QueryInfoKey(key) 311 312 Returns information about a key, as a tuple. 313 314 *key* is an already open key, or one of the predefined 315 :ref:`HKEY_* constants <hkey-constants>`. 316 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 +-------+---------------------------------------------+ 328 | ``2`` | An integer giving when the key was last | 329 | | modified (if available) as 100's of | 330 | | nanoseconds since Jan 1, 1601. | 331 +-------+---------------------------------------------+ 332 333 334.. function:: QueryValue(key, sub_key) 335 336 Retrieves the unnamed value for a key, as a string. 337 338 *key* is an already open key, or one of the predefined 339 :ref:`HKEY_* constants <hkey-constants>`. 340 341 *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*. 344 345 Values in the registry have name, type, and data components. This method 346 retrieves the data for a key's first value that has a NULL name. But the 347 underlying API call doesn't return the type, so always use 348 :func:`QueryValueEx` if possible. 349 350 351.. function:: QueryValueEx(key, value_name) 352 353 Retrieves the type and data for a specified value name associated with 354 an open registry key. 355 356 *key* is an already open key, or one of the predefined 357 :ref:`HKEY_* constants <hkey-constants>`. 358 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 | 369 | | this value (see table in docs for | 370 | | :meth:`SetValueEx`) | 371 +-------+-----------------------------------------+ 372 373 374.. function:: SaveKey(key, file_name) 375 376 Saves the specified key, and all its subkeys to the specified file. 377 378 *key* is an already open key, or one of the predefined 379 :ref:`HKEY_* constants <hkey-constants>`. 380 381 *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. 385 386 If *key* represents a key on a remote computer, the path described by 387 *file_name* is relative to the remote computer. The caller of this method must 388 possess the :const:`SeBackupPrivilege` security privilege. Note that 389 privileges are different than permissions -- see the 390 `Conflicts Between User Rights and Permissions documentation 391 <https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__ 392 for more details. 393 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 401 *key* is an already open key, or one of the predefined 402 :ref:`HKEY_* constants <hkey-constants>`. 403 404 *sub_key* is a string that names the subkey with which the value is associated. 405 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 419 The key identified by the *key* parameter must have been opened with 420 :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 427 *key* is an already open key, or one of the predefined 428 :ref:`HKEY_* constants <hkey-constants>`. 429 430 *value_name* is a string that names the subkey with which the value is 431 associated. 432 433 *reserved* can be anything -- zero is always passed to the API. 434 435 *type* is an integer that specifies the type of the data. See 436 :ref:`Value Types <value-types>` for the available types. 437 438 *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 444 To open the key, use the :func:`CreateKey` or :func:`OpenKey` methods. 445 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 451.. function:: DisableReflectionKey(key) 452 453 Disables registry reflection for 32-bit processes running on a 64-bit 454 operating system. 455 456 *key* is an already open key, or one of the predefined :ref:`HKEY_* constants 457 <hkey-constants>`. 458 459 Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating 460 system. 461 462 If the key is not on the reflection list, the function succeeds but has no 463 effect. Disabling reflection for a key does not affect reflection of any 464 subkeys. 465 466 467.. function:: EnableReflectionKey(key) 468 469 Restores registry reflection for the specified disabled key. 470 471 *key* is an already open key, or one of the predefined :ref:`HKEY_* constants 472 <hkey-constants>`. 473 474 Will generally raise :exc:`NotImplemented` if executed on a 32-bit operating 475 system. 476 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 484 *key* is an already open key, or one of the predefined 485 :ref:`HKEY_* constants <hkey-constants>`. 486 487 Returns ``True`` if reflection is disabled. 488 489 Will generally raise :exc:`NotImplemented` if executed on a 32-bit 490 operating system. 491 492 493.. _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 555<https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__. 556 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 609For more information, see `Accessing an Alternate Registry View 610<https://msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspx>`__. 611 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 629<https://msdn.microsoft.com/en-us/library/ms724884%28v=VS.85%29.aspx>`__. 630 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 641 A 32-bit number in little-endian format. Equivalent to :const:`REG_DWORD`. 642 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 665.. data:: REG_QWORD 666 667 A 64-bit number. 668 669 .. versionadded:: 3.6 670 671.. data:: REG_QWORD_LITTLE_ENDIAN 672 673 A 64-bit number in little-endian format. Equivalent to :const:`REG_QWORD`. 674 675 .. versionadded:: 3.6 676 677.. 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 694.. _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 701:meth:`~PyHKEY.Close` method on the object, or the :func:`CloseKey` function. 702 703All registry functions in this module return one of these objects. 704 705All registry functions in this module which accept a handle object also accept 706an integer, however, use of the handle object is encouraged. 707 708Handle objects provide semantics for :meth:`__bool__` -- thus :: 709 710 if handle: 711 print("Yes") 712 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 719Handle objects can be converted to an integer (e.g., using the built-in 720:func:`int` function), in which case the underlying Windows handle value is 721returned. You can also use the :meth:`~PyHKEY.Detach` method to return the 722integer handle, and also disconnect the Windows handle from the handle object. 723 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 736 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. 739 740 After calling this function, the handle is effectively invalidated, but the 741 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. 743 744.. method:: PyHKEY.__enter__() 745 PyHKEY.__exit__(\*exc_info) 746 747 The HKEY object implements :meth:`~object.__enter__` and 748 :meth:`~object.__exit__` and thus supports the context protocol for the 749 :keyword:`with` statement:: 750 751 with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key: 752 ... # work with key 753 754 will automatically close *key* when control leaves the :keyword:`with` block. 755 756 757