17db96d56Sopenharmony_ci:mod:`winreg` --- Windows registry access 27db96d56Sopenharmony_ci========================================= 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: winreg 57db96d56Sopenharmony_ci :platform: Windows 67db96d56Sopenharmony_ci :synopsis: Routines and objects for manipulating the Windows registry. 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_ci.. sectionauthor:: Mark Hammond <MarkH@ActiveState.com> 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci-------------- 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ciThese functions expose the Windows registry API to Python. Instead of using an 137db96d56Sopenharmony_ciinteger as the registry handle, a :ref:`handle object <handle-object>` is used 147db96d56Sopenharmony_cito ensure that the handles are closed correctly, even if the programmer neglects 157db96d56Sopenharmony_cito explicitly close them. 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci.. _exception-changed: 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci.. versionchanged:: 3.3 207db96d56Sopenharmony_ci Several functions in this module used to raise a 217db96d56Sopenharmony_ci :exc:`WindowsError`, which is now an alias of :exc:`OSError`. 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci.. _functions: 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_ciFunctions 267db96d56Sopenharmony_ci------------------ 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ciThis module offers the following functions: 297db96d56Sopenharmony_ci 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci.. function:: CloseKey(hkey) 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ci Closes a previously opened registry key. The *hkey* argument specifies a 347db96d56Sopenharmony_ci previously opened key. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci .. note:: 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci If *hkey* is not closed using this method (or via :meth:`hkey.Close() 397db96d56Sopenharmony_ci <PyHKEY.Close>`), it is closed when the *hkey* object is destroyed by 407db96d56Sopenharmony_ci Python. 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci 437db96d56Sopenharmony_ci.. function:: ConnectRegistry(computer_name, key) 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci Establishes a connection to a predefined registry handle on another computer, 467db96d56Sopenharmony_ci and returns a :ref:`handle object <handle-object>`. 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci *computer_name* is the name of the remote computer, of the form 497db96d56Sopenharmony_ci ``r"\\computername"``. If ``None``, the local computer is used. 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci *key* is the predefined handle to connect to. 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci The return value is the handle of the opened key. If the function fails, an 547db96d56Sopenharmony_ci :exc:`OSError` exception is raised. 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci .. audit-event:: winreg.ConnectRegistry computer_name,key winreg.ConnectRegistry 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci .. versionchanged:: 3.3 597db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci.. function:: CreateKey(key, sub_key) 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci Creates or opens the specified key, returning a 657db96d56Sopenharmony_ci :ref:`handle object <handle-object>`. 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 687db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ci *sub_key* is a string that names the key this method opens or creates. 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci If *key* is one of the predefined keys, *sub_key* may be ``None``. In that 737db96d56Sopenharmony_ci case, the handle returned is the same key handle passed in to the function. 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci If the key already exists, this function opens the existing key. 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci The return value is the handle of the opened key. If the function fails, an 787db96d56Sopenharmony_ci :exc:`OSError` exception is raised. 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci .. audit-event:: winreg.CreateKey key,sub_key,access winreg.CreateKey 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci .. audit-event:: winreg.OpenKey/result key winreg.CreateKey 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci .. versionchanged:: 3.3 857db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci.. function:: CreateKeyEx(key, sub_key, reserved=0, access=KEY_WRITE) 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci Creates or opens the specified key, returning a 917db96d56Sopenharmony_ci :ref:`handle object <handle-object>`. 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 947db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci *sub_key* is a string that names the key this method opens or creates. 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci *reserved* is a reserved integer, and must be zero. The default is zero. 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci *access* is an integer that specifies an access mask that describes the desired 1017db96d56Sopenharmony_ci security access for the key. Default is :const:`KEY_WRITE`. See 1027db96d56Sopenharmony_ci :ref:`Access Rights <access-rights>` for other allowed values. 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci If *key* is one of the predefined keys, *sub_key* may be ``None``. In that 1057db96d56Sopenharmony_ci case, the handle returned is the same key handle passed in to the function. 1067db96d56Sopenharmony_ci 1077db96d56Sopenharmony_ci If the key already exists, this function opens the existing key. 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ci The return value is the handle of the opened key. If the function fails, an 1107db96d56Sopenharmony_ci :exc:`OSError` exception is raised. 1117db96d56Sopenharmony_ci 1127db96d56Sopenharmony_ci .. audit-event:: winreg.CreateKey key,sub_key,access winreg.CreateKeyEx 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci .. audit-event:: winreg.OpenKey/result key winreg.CreateKeyEx 1157db96d56Sopenharmony_ci 1167db96d56Sopenharmony_ci .. versionadded:: 3.2 1177db96d56Sopenharmony_ci 1187db96d56Sopenharmony_ci .. versionchanged:: 3.3 1197db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 1207db96d56Sopenharmony_ci 1217db96d56Sopenharmony_ci 1227db96d56Sopenharmony_ci.. function:: DeleteKey(key, sub_key) 1237db96d56Sopenharmony_ci 1247db96d56Sopenharmony_ci Deletes the specified key. 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 1277db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci *sub_key* is a string that must be a subkey of the key identified by the *key* 1307db96d56Sopenharmony_ci parameter. This value must not be ``None``, and the key may not have subkeys. 1317db96d56Sopenharmony_ci 1327db96d56Sopenharmony_ci *This method can not delete keys with subkeys.* 1337db96d56Sopenharmony_ci 1347db96d56Sopenharmony_ci If the method succeeds, the entire key, including all of its values, is removed. 1357db96d56Sopenharmony_ci If the method fails, an :exc:`OSError` exception is raised. 1367db96d56Sopenharmony_ci 1377db96d56Sopenharmony_ci .. audit-event:: winreg.DeleteKey key,sub_key,access winreg.DeleteKey 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci .. versionchanged:: 3.3 1407db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci 1437db96d56Sopenharmony_ci.. function:: DeleteKeyEx(key, sub_key, access=KEY_WOW64_64KEY, reserved=0) 1447db96d56Sopenharmony_ci 1457db96d56Sopenharmony_ci Deletes the specified key. 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 1487db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_ci *sub_key* is a string that must be a subkey of the key identified by the 1517db96d56Sopenharmony_ci *key* parameter. This value must not be ``None``, and the key may not have 1527db96d56Sopenharmony_ci subkeys. 1537db96d56Sopenharmony_ci 1547db96d56Sopenharmony_ci *reserved* is a reserved integer, and must be zero. The default is zero. 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci *access* is an integer that specifies an access mask that describes the 1577db96d56Sopenharmony_ci desired security access for the key. Default is :const:`KEY_WOW64_64KEY`. 1587db96d56Sopenharmony_ci On 32-bit Windows, the WOW64 constants are ignored. 1597db96d56Sopenharmony_ci See :ref:`Access Rights <access-rights>` for other allowed values. 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_ci *This method can not delete keys with subkeys.* 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci If the method succeeds, the entire key, including all of its values, is 1647db96d56Sopenharmony_ci removed. If the method fails, an :exc:`OSError` exception is raised. 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci On unsupported Windows versions, :exc:`NotImplementedError` is raised. 1677db96d56Sopenharmony_ci 1687db96d56Sopenharmony_ci .. audit-event:: winreg.DeleteKey key,sub_key,access winreg.DeleteKeyEx 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_ci .. versionadded:: 3.2 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci .. versionchanged:: 3.3 1737db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 1747db96d56Sopenharmony_ci 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ci.. function:: DeleteValue(key, value) 1777db96d56Sopenharmony_ci 1787db96d56Sopenharmony_ci Removes a named value from a registry key. 1797db96d56Sopenharmony_ci 1807db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 1817db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ci *value* is a string that identifies the value to remove. 1847db96d56Sopenharmony_ci 1857db96d56Sopenharmony_ci .. audit-event:: winreg.DeleteValue key,value winreg.DeleteValue 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_ci 1887db96d56Sopenharmony_ci.. function:: EnumKey(key, index) 1897db96d56Sopenharmony_ci 1907db96d56Sopenharmony_ci Enumerates subkeys of an open registry key, returning a string. 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 1937db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 1947db96d56Sopenharmony_ci 1957db96d56Sopenharmony_ci *index* is an integer that identifies the index of the key to retrieve. 1967db96d56Sopenharmony_ci 1977db96d56Sopenharmony_ci The function retrieves the name of one subkey each time it is called. It is 1987db96d56Sopenharmony_ci typically called repeatedly until an :exc:`OSError` exception is 1997db96d56Sopenharmony_ci raised, indicating, no more values are available. 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ci .. audit-event:: winreg.EnumKey key,index winreg.EnumKey 2027db96d56Sopenharmony_ci 2037db96d56Sopenharmony_ci .. versionchanged:: 3.3 2047db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 2057db96d56Sopenharmony_ci 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ci.. function:: EnumValue(key, index) 2087db96d56Sopenharmony_ci 2097db96d56Sopenharmony_ci Enumerates values of an open registry key, returning a tuple. 2107db96d56Sopenharmony_ci 2117db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 2127db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 2137db96d56Sopenharmony_ci 2147db96d56Sopenharmony_ci *index* is an integer that identifies the index of the value to retrieve. 2157db96d56Sopenharmony_ci 2167db96d56Sopenharmony_ci The function retrieves the name of one subkey each time it is called. It is 2177db96d56Sopenharmony_ci typically called repeatedly, until an :exc:`OSError` exception is 2187db96d56Sopenharmony_ci raised, indicating no more values. 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci The result is a tuple of 3 items: 2217db96d56Sopenharmony_ci 2227db96d56Sopenharmony_ci +-------+--------------------------------------------+ 2237db96d56Sopenharmony_ci | Index | Meaning | 2247db96d56Sopenharmony_ci +=======+============================================+ 2257db96d56Sopenharmony_ci | ``0`` | A string that identifies the value name | 2267db96d56Sopenharmony_ci +-------+--------------------------------------------+ 2277db96d56Sopenharmony_ci | ``1`` | An object that holds the value data, and | 2287db96d56Sopenharmony_ci | | whose type depends on the underlying | 2297db96d56Sopenharmony_ci | | registry type | 2307db96d56Sopenharmony_ci +-------+--------------------------------------------+ 2317db96d56Sopenharmony_ci | ``2`` | An integer that identifies the type of the | 2327db96d56Sopenharmony_ci | | value data (see table in docs for | 2337db96d56Sopenharmony_ci | | :meth:`SetValueEx`) | 2347db96d56Sopenharmony_ci +-------+--------------------------------------------+ 2357db96d56Sopenharmony_ci 2367db96d56Sopenharmony_ci .. audit-event:: winreg.EnumValue key,index winreg.EnumValue 2377db96d56Sopenharmony_ci 2387db96d56Sopenharmony_ci .. versionchanged:: 3.3 2397db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 2407db96d56Sopenharmony_ci 2417db96d56Sopenharmony_ci 2427db96d56Sopenharmony_ci.. index:: 2437db96d56Sopenharmony_ci single: % (percent); environment variables expansion (Windows) 2447db96d56Sopenharmony_ci 2457db96d56Sopenharmony_ci.. function:: ExpandEnvironmentStrings(str) 2467db96d56Sopenharmony_ci 2477db96d56Sopenharmony_ci Expands environment variable placeholders ``%NAME%`` in strings like 2487db96d56Sopenharmony_ci :const:`REG_EXPAND_SZ`:: 2497db96d56Sopenharmony_ci 2507db96d56Sopenharmony_ci >>> ExpandEnvironmentStrings('%windir%') 2517db96d56Sopenharmony_ci 'C:\\Windows' 2527db96d56Sopenharmony_ci 2537db96d56Sopenharmony_ci .. audit-event:: winreg.ExpandEnvironmentStrings str winreg.ExpandEnvironmentStrings 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ci 2567db96d56Sopenharmony_ci.. function:: FlushKey(key) 2577db96d56Sopenharmony_ci 2587db96d56Sopenharmony_ci Writes all the attributes of a key to the registry. 2597db96d56Sopenharmony_ci 2607db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 2617db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 2627db96d56Sopenharmony_ci 2637db96d56Sopenharmony_ci It is not necessary to call :func:`FlushKey` to change a key. Registry changes are 2647db96d56Sopenharmony_ci flushed to disk by the registry using its lazy flusher. Registry changes are 2657db96d56Sopenharmony_ci also flushed to disk at system shutdown. Unlike :func:`CloseKey`, the 2667db96d56Sopenharmony_ci :func:`FlushKey` method returns only when all the data has been written to the 2677db96d56Sopenharmony_ci registry. An application should only call :func:`FlushKey` if it requires 2687db96d56Sopenharmony_ci absolute certainty that registry changes are on disk. 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci .. note:: 2717db96d56Sopenharmony_ci 2727db96d56Sopenharmony_ci If you don't know whether a :func:`FlushKey` call is required, it probably 2737db96d56Sopenharmony_ci isn't. 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ci 2767db96d56Sopenharmony_ci.. function:: LoadKey(key, sub_key, file_name) 2777db96d56Sopenharmony_ci 2787db96d56Sopenharmony_ci Creates a subkey under the specified key and stores registration information 2797db96d56Sopenharmony_ci from a specified file into that subkey. 2807db96d56Sopenharmony_ci 2817db96d56Sopenharmony_ci *key* is a handle returned by :func:`ConnectRegistry` or one of the constants 2827db96d56Sopenharmony_ci :const:`HKEY_USERS` or :const:`HKEY_LOCAL_MACHINE`. 2837db96d56Sopenharmony_ci 2847db96d56Sopenharmony_ci *sub_key* is a string that identifies the subkey to load. 2857db96d56Sopenharmony_ci 2867db96d56Sopenharmony_ci *file_name* is the name of the file to load registry data from. This file must 2877db96d56Sopenharmony_ci have been created with the :func:`SaveKey` function. Under the file allocation 2887db96d56Sopenharmony_ci table (FAT) file system, the filename may not have an extension. 2897db96d56Sopenharmony_ci 2907db96d56Sopenharmony_ci A call to :func:`LoadKey` fails if the calling process does not have the 2917db96d56Sopenharmony_ci :const:`SE_RESTORE_PRIVILEGE` privilege. Note that privileges are different 2927db96d56Sopenharmony_ci from permissions -- see the `RegLoadKey documentation 2937db96d56Sopenharmony_ci <https://msdn.microsoft.com/en-us/library/ms724889%28v=VS.85%29.aspx>`__ for 2947db96d56Sopenharmony_ci more details. 2957db96d56Sopenharmony_ci 2967db96d56Sopenharmony_ci If *key* is a handle returned by :func:`ConnectRegistry`, then the path 2977db96d56Sopenharmony_ci specified in *file_name* is relative to the remote computer. 2987db96d56Sopenharmony_ci 2997db96d56Sopenharmony_ci .. audit-event:: winreg.LoadKey key,sub_key,file_name winreg.LoadKey 3007db96d56Sopenharmony_ci 3017db96d56Sopenharmony_ci 3027db96d56Sopenharmony_ci.. function:: OpenKey(key, sub_key, reserved=0, access=KEY_READ) 3037db96d56Sopenharmony_ci OpenKeyEx(key, sub_key, reserved=0, access=KEY_READ) 3047db96d56Sopenharmony_ci 3057db96d56Sopenharmony_ci Opens the specified key, returning a :ref:`handle object <handle-object>`. 3067db96d56Sopenharmony_ci 3077db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 3087db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 3097db96d56Sopenharmony_ci 3107db96d56Sopenharmony_ci *sub_key* is a string that identifies the sub_key to open. 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ci *reserved* is a reserved integer, and must be zero. The default is zero. 3137db96d56Sopenharmony_ci 3147db96d56Sopenharmony_ci *access* is an integer that specifies an access mask that describes the desired 3157db96d56Sopenharmony_ci security access for the key. Default is :const:`KEY_READ`. See :ref:`Access 3167db96d56Sopenharmony_ci Rights <access-rights>` for other allowed values. 3177db96d56Sopenharmony_ci 3187db96d56Sopenharmony_ci The result is a new handle to the specified key. 3197db96d56Sopenharmony_ci 3207db96d56Sopenharmony_ci If the function fails, :exc:`OSError` is raised. 3217db96d56Sopenharmony_ci 3227db96d56Sopenharmony_ci .. audit-event:: winreg.OpenKey key,sub_key,access winreg.OpenKey 3237db96d56Sopenharmony_ci 3247db96d56Sopenharmony_ci .. audit-event:: winreg.OpenKey/result key winreg.OpenKey 3257db96d56Sopenharmony_ci 3267db96d56Sopenharmony_ci .. versionchanged:: 3.2 3277db96d56Sopenharmony_ci Allow the use of named arguments. 3287db96d56Sopenharmony_ci 3297db96d56Sopenharmony_ci .. versionchanged:: 3.3 3307db96d56Sopenharmony_ci See :ref:`above <exception-changed>`. 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_ci 3337db96d56Sopenharmony_ci.. function:: QueryInfoKey(key) 3347db96d56Sopenharmony_ci 3357db96d56Sopenharmony_ci Returns information about a key, as a tuple. 3367db96d56Sopenharmony_ci 3377db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 3387db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 3397db96d56Sopenharmony_ci 3407db96d56Sopenharmony_ci The result is a tuple of 3 items: 3417db96d56Sopenharmony_ci 3427db96d56Sopenharmony_ci +-------+---------------------------------------------+ 3437db96d56Sopenharmony_ci | Index | Meaning | 3447db96d56Sopenharmony_ci +=======+=============================================+ 3457db96d56Sopenharmony_ci | ``0`` | An integer giving the number of sub keys | 3467db96d56Sopenharmony_ci | | this key has. | 3477db96d56Sopenharmony_ci +-------+---------------------------------------------+ 3487db96d56Sopenharmony_ci | ``1`` | An integer giving the number of values this | 3497db96d56Sopenharmony_ci | | key has. | 3507db96d56Sopenharmony_ci +-------+---------------------------------------------+ 3517db96d56Sopenharmony_ci | ``2`` | An integer giving when the key was last | 3527db96d56Sopenharmony_ci | | modified (if available) as 100's of | 3537db96d56Sopenharmony_ci | | nanoseconds since Jan 1, 1601. | 3547db96d56Sopenharmony_ci +-------+---------------------------------------------+ 3557db96d56Sopenharmony_ci 3567db96d56Sopenharmony_ci .. audit-event:: winreg.QueryInfoKey key winreg.QueryInfoKey 3577db96d56Sopenharmony_ci 3587db96d56Sopenharmony_ci 3597db96d56Sopenharmony_ci.. function:: QueryValue(key, sub_key) 3607db96d56Sopenharmony_ci 3617db96d56Sopenharmony_ci Retrieves the unnamed value for a key, as a string. 3627db96d56Sopenharmony_ci 3637db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 3647db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 3657db96d56Sopenharmony_ci 3667db96d56Sopenharmony_ci *sub_key* is a string that holds the name of the subkey with which the value is 3677db96d56Sopenharmony_ci associated. If this parameter is ``None`` or empty, the function retrieves the 3687db96d56Sopenharmony_ci value set by the :func:`SetValue` method for the key identified by *key*. 3697db96d56Sopenharmony_ci 3707db96d56Sopenharmony_ci Values in the registry have name, type, and data components. This method 3717db96d56Sopenharmony_ci retrieves the data for a key's first value that has a ``NULL`` name. But the 3727db96d56Sopenharmony_ci underlying API call doesn't return the type, so always use 3737db96d56Sopenharmony_ci :func:`QueryValueEx` if possible. 3747db96d56Sopenharmony_ci 3757db96d56Sopenharmony_ci .. audit-event:: winreg.QueryValue key,sub_key,value_name winreg.QueryValue 3767db96d56Sopenharmony_ci 3777db96d56Sopenharmony_ci 3787db96d56Sopenharmony_ci.. function:: QueryValueEx(key, value_name) 3797db96d56Sopenharmony_ci 3807db96d56Sopenharmony_ci Retrieves the type and data for a specified value name associated with 3817db96d56Sopenharmony_ci an open registry key. 3827db96d56Sopenharmony_ci 3837db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 3847db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 3857db96d56Sopenharmony_ci 3867db96d56Sopenharmony_ci *value_name* is a string indicating the value to query. 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ci The result is a tuple of 2 items: 3897db96d56Sopenharmony_ci 3907db96d56Sopenharmony_ci +-------+-----------------------------------------+ 3917db96d56Sopenharmony_ci | Index | Meaning | 3927db96d56Sopenharmony_ci +=======+=========================================+ 3937db96d56Sopenharmony_ci | ``0`` | The value of the registry item. | 3947db96d56Sopenharmony_ci +-------+-----------------------------------------+ 3957db96d56Sopenharmony_ci | ``1`` | An integer giving the registry type for | 3967db96d56Sopenharmony_ci | | this value (see table in docs for | 3977db96d56Sopenharmony_ci | | :meth:`SetValueEx`) | 3987db96d56Sopenharmony_ci +-------+-----------------------------------------+ 3997db96d56Sopenharmony_ci 4007db96d56Sopenharmony_ci .. audit-event:: winreg.QueryValue key,sub_key,value_name winreg.QueryValueEx 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_ci 4037db96d56Sopenharmony_ci.. function:: SaveKey(key, file_name) 4047db96d56Sopenharmony_ci 4057db96d56Sopenharmony_ci Saves the specified key, and all its subkeys to the specified file. 4067db96d56Sopenharmony_ci 4077db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 4087db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 4097db96d56Sopenharmony_ci 4107db96d56Sopenharmony_ci *file_name* is the name of the file to save registry data to. This file 4117db96d56Sopenharmony_ci cannot already exist. If this filename includes an extension, it cannot be 4127db96d56Sopenharmony_ci used on file allocation table (FAT) file systems by the :meth:`LoadKey` 4137db96d56Sopenharmony_ci method. 4147db96d56Sopenharmony_ci 4157db96d56Sopenharmony_ci If *key* represents a key on a remote computer, the path described by 4167db96d56Sopenharmony_ci *file_name* is relative to the remote computer. The caller of this method must 4177db96d56Sopenharmony_ci possess the :const:`SeBackupPrivilege` security privilege. Note that 4187db96d56Sopenharmony_ci privileges are different than permissions -- see the 4197db96d56Sopenharmony_ci `Conflicts Between User Rights and Permissions documentation 4207db96d56Sopenharmony_ci <https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__ 4217db96d56Sopenharmony_ci for more details. 4227db96d56Sopenharmony_ci 4237db96d56Sopenharmony_ci This function passes ``NULL`` for *security_attributes* to the API. 4247db96d56Sopenharmony_ci 4257db96d56Sopenharmony_ci .. audit-event:: winreg.SaveKey key,file_name winreg.SaveKey 4267db96d56Sopenharmony_ci 4277db96d56Sopenharmony_ci 4287db96d56Sopenharmony_ci.. function:: SetValue(key, sub_key, type, value) 4297db96d56Sopenharmony_ci 4307db96d56Sopenharmony_ci Associates a value with a specified key. 4317db96d56Sopenharmony_ci 4327db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 4337db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci *sub_key* is a string that names the subkey with which the value is associated. 4367db96d56Sopenharmony_ci 4377db96d56Sopenharmony_ci *type* is an integer that specifies the type of the data. Currently this must be 4387db96d56Sopenharmony_ci :const:`REG_SZ`, meaning only strings are supported. Use the :func:`SetValueEx` 4397db96d56Sopenharmony_ci function for support for other data types. 4407db96d56Sopenharmony_ci 4417db96d56Sopenharmony_ci *value* is a string that specifies the new value. 4427db96d56Sopenharmony_ci 4437db96d56Sopenharmony_ci If the key specified by the *sub_key* parameter does not exist, the SetValue 4447db96d56Sopenharmony_ci function creates it. 4457db96d56Sopenharmony_ci 4467db96d56Sopenharmony_ci Value lengths are limited by available memory. Long values (more than 2048 4477db96d56Sopenharmony_ci bytes) should be stored as files with the filenames stored in the configuration 4487db96d56Sopenharmony_ci registry. This helps the registry perform efficiently. 4497db96d56Sopenharmony_ci 4507db96d56Sopenharmony_ci The key identified by the *key* parameter must have been opened with 4517db96d56Sopenharmony_ci :const:`KEY_SET_VALUE` access. 4527db96d56Sopenharmony_ci 4537db96d56Sopenharmony_ci .. audit-event:: winreg.SetValue key,sub_key,type,value winreg.SetValue 4547db96d56Sopenharmony_ci 4557db96d56Sopenharmony_ci 4567db96d56Sopenharmony_ci.. function:: SetValueEx(key, value_name, reserved, type, value) 4577db96d56Sopenharmony_ci 4587db96d56Sopenharmony_ci Stores data in the value field of an open registry key. 4597db96d56Sopenharmony_ci 4607db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 4617db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 4627db96d56Sopenharmony_ci 4637db96d56Sopenharmony_ci *value_name* is a string that names the subkey with which the value is 4647db96d56Sopenharmony_ci associated. 4657db96d56Sopenharmony_ci 4667db96d56Sopenharmony_ci *reserved* can be anything -- zero is always passed to the API. 4677db96d56Sopenharmony_ci 4687db96d56Sopenharmony_ci *type* is an integer that specifies the type of the data. See 4697db96d56Sopenharmony_ci :ref:`Value Types <value-types>` for the available types. 4707db96d56Sopenharmony_ci 4717db96d56Sopenharmony_ci *value* is a string that specifies the new value. 4727db96d56Sopenharmony_ci 4737db96d56Sopenharmony_ci This method can also set additional value and type information for the specified 4747db96d56Sopenharmony_ci key. The key identified by the key parameter must have been opened with 4757db96d56Sopenharmony_ci :const:`KEY_SET_VALUE` access. 4767db96d56Sopenharmony_ci 4777db96d56Sopenharmony_ci To open the key, use the :func:`CreateKey` or :func:`OpenKey` methods. 4787db96d56Sopenharmony_ci 4797db96d56Sopenharmony_ci Value lengths are limited by available memory. Long values (more than 2048 4807db96d56Sopenharmony_ci bytes) should be stored as files with the filenames stored in the configuration 4817db96d56Sopenharmony_ci registry. This helps the registry perform efficiently. 4827db96d56Sopenharmony_ci 4837db96d56Sopenharmony_ci .. audit-event:: winreg.SetValue key,sub_key,type,value winreg.SetValueEx 4847db96d56Sopenharmony_ci 4857db96d56Sopenharmony_ci 4867db96d56Sopenharmony_ci.. function:: DisableReflectionKey(key) 4877db96d56Sopenharmony_ci 4887db96d56Sopenharmony_ci Disables registry reflection for 32-bit processes running on a 64-bit 4897db96d56Sopenharmony_ci operating system. 4907db96d56Sopenharmony_ci 4917db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined :ref:`HKEY_* constants 4927db96d56Sopenharmony_ci <hkey-constants>`. 4937db96d56Sopenharmony_ci 4947db96d56Sopenharmony_ci Will generally raise :exc:`NotImplementedError` if executed on a 32-bit operating 4957db96d56Sopenharmony_ci system. 4967db96d56Sopenharmony_ci 4977db96d56Sopenharmony_ci If the key is not on the reflection list, the function succeeds but has no 4987db96d56Sopenharmony_ci effect. Disabling reflection for a key does not affect reflection of any 4997db96d56Sopenharmony_ci subkeys. 5007db96d56Sopenharmony_ci 5017db96d56Sopenharmony_ci .. audit-event:: winreg.DisableReflectionKey key winreg.DisableReflectionKey 5027db96d56Sopenharmony_ci 5037db96d56Sopenharmony_ci 5047db96d56Sopenharmony_ci.. function:: EnableReflectionKey(key) 5057db96d56Sopenharmony_ci 5067db96d56Sopenharmony_ci Restores registry reflection for the specified disabled key. 5077db96d56Sopenharmony_ci 5087db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined :ref:`HKEY_* constants 5097db96d56Sopenharmony_ci <hkey-constants>`. 5107db96d56Sopenharmony_ci 5117db96d56Sopenharmony_ci Will generally raise :exc:`NotImplementedError` if executed on a 32-bit operating 5127db96d56Sopenharmony_ci system. 5137db96d56Sopenharmony_ci 5147db96d56Sopenharmony_ci Restoring reflection for a key does not affect reflection of any subkeys. 5157db96d56Sopenharmony_ci 5167db96d56Sopenharmony_ci .. audit-event:: winreg.EnableReflectionKey key winreg.EnableReflectionKey 5177db96d56Sopenharmony_ci 5187db96d56Sopenharmony_ci 5197db96d56Sopenharmony_ci.. function:: QueryReflectionKey(key) 5207db96d56Sopenharmony_ci 5217db96d56Sopenharmony_ci Determines the reflection state for the specified key. 5227db96d56Sopenharmony_ci 5237db96d56Sopenharmony_ci *key* is an already open key, or one of the predefined 5247db96d56Sopenharmony_ci :ref:`HKEY_* constants <hkey-constants>`. 5257db96d56Sopenharmony_ci 5267db96d56Sopenharmony_ci Returns ``True`` if reflection is disabled. 5277db96d56Sopenharmony_ci 5287db96d56Sopenharmony_ci Will generally raise :exc:`NotImplementedError` if executed on a 32-bit 5297db96d56Sopenharmony_ci operating system. 5307db96d56Sopenharmony_ci 5317db96d56Sopenharmony_ci .. audit-event:: winreg.QueryReflectionKey key winreg.QueryReflectionKey 5327db96d56Sopenharmony_ci 5337db96d56Sopenharmony_ci 5347db96d56Sopenharmony_ci.. _constants: 5357db96d56Sopenharmony_ci 5367db96d56Sopenharmony_ciConstants 5377db96d56Sopenharmony_ci------------------ 5387db96d56Sopenharmony_ci 5397db96d56Sopenharmony_ciThe following constants are defined for use in many :mod:`_winreg` functions. 5407db96d56Sopenharmony_ci 5417db96d56Sopenharmony_ci.. _hkey-constants: 5427db96d56Sopenharmony_ci 5437db96d56Sopenharmony_ciHKEY_* Constants 5447db96d56Sopenharmony_ci++++++++++++++++ 5457db96d56Sopenharmony_ci 5467db96d56Sopenharmony_ci.. data:: HKEY_CLASSES_ROOT 5477db96d56Sopenharmony_ci 5487db96d56Sopenharmony_ci Registry entries subordinate to this key define types (or classes) of 5497db96d56Sopenharmony_ci documents and the properties associated with those types. Shell and 5507db96d56Sopenharmony_ci COM applications use the information stored under this key. 5517db96d56Sopenharmony_ci 5527db96d56Sopenharmony_ci 5537db96d56Sopenharmony_ci.. data:: HKEY_CURRENT_USER 5547db96d56Sopenharmony_ci 5557db96d56Sopenharmony_ci Registry entries subordinate to this key define the preferences of 5567db96d56Sopenharmony_ci the current user. These preferences include the settings of 5577db96d56Sopenharmony_ci environment variables, data about program groups, colors, printers, 5587db96d56Sopenharmony_ci network connections, and application preferences. 5597db96d56Sopenharmony_ci 5607db96d56Sopenharmony_ci.. data:: HKEY_LOCAL_MACHINE 5617db96d56Sopenharmony_ci 5627db96d56Sopenharmony_ci Registry entries subordinate to this key define the physical state 5637db96d56Sopenharmony_ci of the computer, including data about the bus type, system memory, 5647db96d56Sopenharmony_ci and installed hardware and software. 5657db96d56Sopenharmony_ci 5667db96d56Sopenharmony_ci.. data:: HKEY_USERS 5677db96d56Sopenharmony_ci 5687db96d56Sopenharmony_ci Registry entries subordinate to this key define the default user 5697db96d56Sopenharmony_ci configuration for new users on the local computer and the user 5707db96d56Sopenharmony_ci configuration for the current user. 5717db96d56Sopenharmony_ci 5727db96d56Sopenharmony_ci.. data:: HKEY_PERFORMANCE_DATA 5737db96d56Sopenharmony_ci 5747db96d56Sopenharmony_ci Registry entries subordinate to this key allow you to access 5757db96d56Sopenharmony_ci performance data. The data is not actually stored in the registry; 5767db96d56Sopenharmony_ci the registry functions cause the system to collect the data from 5777db96d56Sopenharmony_ci its source. 5787db96d56Sopenharmony_ci 5797db96d56Sopenharmony_ci 5807db96d56Sopenharmony_ci.. data:: HKEY_CURRENT_CONFIG 5817db96d56Sopenharmony_ci 5827db96d56Sopenharmony_ci Contains information about the current hardware profile of the 5837db96d56Sopenharmony_ci local computer system. 5847db96d56Sopenharmony_ci 5857db96d56Sopenharmony_ci.. data:: HKEY_DYN_DATA 5867db96d56Sopenharmony_ci 5877db96d56Sopenharmony_ci This key is not used in versions of Windows after 98. 5887db96d56Sopenharmony_ci 5897db96d56Sopenharmony_ci 5907db96d56Sopenharmony_ci.. _access-rights: 5917db96d56Sopenharmony_ci 5927db96d56Sopenharmony_ciAccess Rights 5937db96d56Sopenharmony_ci+++++++++++++ 5947db96d56Sopenharmony_ci 5957db96d56Sopenharmony_ciFor more information, see `Registry Key Security and Access 5967db96d56Sopenharmony_ci<https://msdn.microsoft.com/en-us/library/ms724878%28v=VS.85%29.aspx>`__. 5977db96d56Sopenharmony_ci 5987db96d56Sopenharmony_ci.. data:: KEY_ALL_ACCESS 5997db96d56Sopenharmony_ci 6007db96d56Sopenharmony_ci Combines the STANDARD_RIGHTS_REQUIRED, :const:`KEY_QUERY_VALUE`, 6017db96d56Sopenharmony_ci :const:`KEY_SET_VALUE`, :const:`KEY_CREATE_SUB_KEY`, 6027db96d56Sopenharmony_ci :const:`KEY_ENUMERATE_SUB_KEYS`, :const:`KEY_NOTIFY`, 6037db96d56Sopenharmony_ci and :const:`KEY_CREATE_LINK` access rights. 6047db96d56Sopenharmony_ci 6057db96d56Sopenharmony_ci.. data:: KEY_WRITE 6067db96d56Sopenharmony_ci 6077db96d56Sopenharmony_ci Combines the STANDARD_RIGHTS_WRITE, :const:`KEY_SET_VALUE`, and 6087db96d56Sopenharmony_ci :const:`KEY_CREATE_SUB_KEY` access rights. 6097db96d56Sopenharmony_ci 6107db96d56Sopenharmony_ci.. data:: KEY_READ 6117db96d56Sopenharmony_ci 6127db96d56Sopenharmony_ci Combines the STANDARD_RIGHTS_READ, :const:`KEY_QUERY_VALUE`, 6137db96d56Sopenharmony_ci :const:`KEY_ENUMERATE_SUB_KEYS`, and :const:`KEY_NOTIFY` values. 6147db96d56Sopenharmony_ci 6157db96d56Sopenharmony_ci.. data:: KEY_EXECUTE 6167db96d56Sopenharmony_ci 6177db96d56Sopenharmony_ci Equivalent to :const:`KEY_READ`. 6187db96d56Sopenharmony_ci 6197db96d56Sopenharmony_ci.. data:: KEY_QUERY_VALUE 6207db96d56Sopenharmony_ci 6217db96d56Sopenharmony_ci Required to query the values of a registry key. 6227db96d56Sopenharmony_ci 6237db96d56Sopenharmony_ci.. data:: KEY_SET_VALUE 6247db96d56Sopenharmony_ci 6257db96d56Sopenharmony_ci Required to create, delete, or set a registry value. 6267db96d56Sopenharmony_ci 6277db96d56Sopenharmony_ci.. data:: KEY_CREATE_SUB_KEY 6287db96d56Sopenharmony_ci 6297db96d56Sopenharmony_ci Required to create a subkey of a registry key. 6307db96d56Sopenharmony_ci 6317db96d56Sopenharmony_ci.. data:: KEY_ENUMERATE_SUB_KEYS 6327db96d56Sopenharmony_ci 6337db96d56Sopenharmony_ci Required to enumerate the subkeys of a registry key. 6347db96d56Sopenharmony_ci 6357db96d56Sopenharmony_ci.. data:: KEY_NOTIFY 6367db96d56Sopenharmony_ci 6377db96d56Sopenharmony_ci Required to request change notifications for a registry key or for 6387db96d56Sopenharmony_ci subkeys of a registry key. 6397db96d56Sopenharmony_ci 6407db96d56Sopenharmony_ci.. data:: KEY_CREATE_LINK 6417db96d56Sopenharmony_ci 6427db96d56Sopenharmony_ci Reserved for system use. 6437db96d56Sopenharmony_ci 6447db96d56Sopenharmony_ci 6457db96d56Sopenharmony_ci.. _64-bit-access-rights: 6467db96d56Sopenharmony_ci 6477db96d56Sopenharmony_ci64-bit Specific 6487db96d56Sopenharmony_ci*************** 6497db96d56Sopenharmony_ci 6507db96d56Sopenharmony_ciFor more information, see `Accessing an Alternate Registry View 6517db96d56Sopenharmony_ci<https://msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspx>`__. 6527db96d56Sopenharmony_ci 6537db96d56Sopenharmony_ci.. data:: KEY_WOW64_64KEY 6547db96d56Sopenharmony_ci 6557db96d56Sopenharmony_ci Indicates that an application on 64-bit Windows should operate on 6567db96d56Sopenharmony_ci the 64-bit registry view. On 32-bit Windows, this constant is ignored. 6577db96d56Sopenharmony_ci 6587db96d56Sopenharmony_ci.. data:: KEY_WOW64_32KEY 6597db96d56Sopenharmony_ci 6607db96d56Sopenharmony_ci Indicates that an application on 64-bit Windows should operate on 6617db96d56Sopenharmony_ci the 32-bit registry view. On 32-bit Windows, this constant is ignored. 6627db96d56Sopenharmony_ci 6637db96d56Sopenharmony_ci.. _value-types: 6647db96d56Sopenharmony_ci 6657db96d56Sopenharmony_ciValue Types 6667db96d56Sopenharmony_ci+++++++++++ 6677db96d56Sopenharmony_ci 6687db96d56Sopenharmony_ciFor more information, see `Registry Value Types 6697db96d56Sopenharmony_ci<https://msdn.microsoft.com/en-us/library/ms724884%28v=VS.85%29.aspx>`__. 6707db96d56Sopenharmony_ci 6717db96d56Sopenharmony_ci.. data:: REG_BINARY 6727db96d56Sopenharmony_ci 6737db96d56Sopenharmony_ci Binary data in any form. 6747db96d56Sopenharmony_ci 6757db96d56Sopenharmony_ci.. data:: REG_DWORD 6767db96d56Sopenharmony_ci 6777db96d56Sopenharmony_ci 32-bit number. 6787db96d56Sopenharmony_ci 6797db96d56Sopenharmony_ci.. data:: REG_DWORD_LITTLE_ENDIAN 6807db96d56Sopenharmony_ci 6817db96d56Sopenharmony_ci A 32-bit number in little-endian format. Equivalent to :const:`REG_DWORD`. 6827db96d56Sopenharmony_ci 6837db96d56Sopenharmony_ci.. data:: REG_DWORD_BIG_ENDIAN 6847db96d56Sopenharmony_ci 6857db96d56Sopenharmony_ci A 32-bit number in big-endian format. 6867db96d56Sopenharmony_ci 6877db96d56Sopenharmony_ci.. data:: REG_EXPAND_SZ 6887db96d56Sopenharmony_ci 6897db96d56Sopenharmony_ci Null-terminated string containing references to environment 6907db96d56Sopenharmony_ci variables (``%PATH%``). 6917db96d56Sopenharmony_ci 6927db96d56Sopenharmony_ci.. data:: REG_LINK 6937db96d56Sopenharmony_ci 6947db96d56Sopenharmony_ci A Unicode symbolic link. 6957db96d56Sopenharmony_ci 6967db96d56Sopenharmony_ci.. data:: REG_MULTI_SZ 6977db96d56Sopenharmony_ci 6987db96d56Sopenharmony_ci A sequence of null-terminated strings, terminated by two null characters. 6997db96d56Sopenharmony_ci (Python handles this termination automatically.) 7007db96d56Sopenharmony_ci 7017db96d56Sopenharmony_ci.. data:: REG_NONE 7027db96d56Sopenharmony_ci 7037db96d56Sopenharmony_ci No defined value type. 7047db96d56Sopenharmony_ci 7057db96d56Sopenharmony_ci.. data:: REG_QWORD 7067db96d56Sopenharmony_ci 7077db96d56Sopenharmony_ci A 64-bit number. 7087db96d56Sopenharmony_ci 7097db96d56Sopenharmony_ci .. versionadded:: 3.6 7107db96d56Sopenharmony_ci 7117db96d56Sopenharmony_ci.. data:: REG_QWORD_LITTLE_ENDIAN 7127db96d56Sopenharmony_ci 7137db96d56Sopenharmony_ci A 64-bit number in little-endian format. Equivalent to :const:`REG_QWORD`. 7147db96d56Sopenharmony_ci 7157db96d56Sopenharmony_ci .. versionadded:: 3.6 7167db96d56Sopenharmony_ci 7177db96d56Sopenharmony_ci.. data:: REG_RESOURCE_LIST 7187db96d56Sopenharmony_ci 7197db96d56Sopenharmony_ci A device-driver resource list. 7207db96d56Sopenharmony_ci 7217db96d56Sopenharmony_ci.. data:: REG_FULL_RESOURCE_DESCRIPTOR 7227db96d56Sopenharmony_ci 7237db96d56Sopenharmony_ci A hardware setting. 7247db96d56Sopenharmony_ci 7257db96d56Sopenharmony_ci.. data:: REG_RESOURCE_REQUIREMENTS_LIST 7267db96d56Sopenharmony_ci 7277db96d56Sopenharmony_ci A hardware resource list. 7287db96d56Sopenharmony_ci 7297db96d56Sopenharmony_ci.. data:: REG_SZ 7307db96d56Sopenharmony_ci 7317db96d56Sopenharmony_ci A null-terminated string. 7327db96d56Sopenharmony_ci 7337db96d56Sopenharmony_ci 7347db96d56Sopenharmony_ci.. _handle-object: 7357db96d56Sopenharmony_ci 7367db96d56Sopenharmony_ciRegistry Handle Objects 7377db96d56Sopenharmony_ci----------------------- 7387db96d56Sopenharmony_ci 7397db96d56Sopenharmony_ciThis object wraps a Windows HKEY object, automatically closing it when the 7407db96d56Sopenharmony_ciobject is destroyed. To guarantee cleanup, you can call either the 7417db96d56Sopenharmony_ci:meth:`~PyHKEY.Close` method on the object, or the :func:`CloseKey` function. 7427db96d56Sopenharmony_ci 7437db96d56Sopenharmony_ciAll registry functions in this module return one of these objects. 7447db96d56Sopenharmony_ci 7457db96d56Sopenharmony_ciAll registry functions in this module which accept a handle object also accept 7467db96d56Sopenharmony_cian integer, however, use of the handle object is encouraged. 7477db96d56Sopenharmony_ci 7487db96d56Sopenharmony_ciHandle objects provide semantics for :meth:`__bool__` -- thus :: 7497db96d56Sopenharmony_ci 7507db96d56Sopenharmony_ci if handle: 7517db96d56Sopenharmony_ci print("Yes") 7527db96d56Sopenharmony_ci 7537db96d56Sopenharmony_ciwill print ``Yes`` if the handle is currently valid (has not been closed or 7547db96d56Sopenharmony_cidetached). 7557db96d56Sopenharmony_ci 7567db96d56Sopenharmony_ciThe object also support comparison semantics, so handle objects will compare 7577db96d56Sopenharmony_citrue if they both reference the same underlying Windows handle value. 7587db96d56Sopenharmony_ci 7597db96d56Sopenharmony_ciHandle objects can be converted to an integer (e.g., using the built-in 7607db96d56Sopenharmony_ci:func:`int` function), in which case the underlying Windows handle value is 7617db96d56Sopenharmony_cireturned. You can also use the :meth:`~PyHKEY.Detach` method to return the 7627db96d56Sopenharmony_ciinteger handle, and also disconnect the Windows handle from the handle object. 7637db96d56Sopenharmony_ci 7647db96d56Sopenharmony_ci 7657db96d56Sopenharmony_ci.. method:: PyHKEY.Close() 7667db96d56Sopenharmony_ci 7677db96d56Sopenharmony_ci Closes the underlying Windows handle. 7687db96d56Sopenharmony_ci 7697db96d56Sopenharmony_ci If the handle is already closed, no error is raised. 7707db96d56Sopenharmony_ci 7717db96d56Sopenharmony_ci 7727db96d56Sopenharmony_ci.. method:: PyHKEY.Detach() 7737db96d56Sopenharmony_ci 7747db96d56Sopenharmony_ci Detaches the Windows handle from the handle object. 7757db96d56Sopenharmony_ci 7767db96d56Sopenharmony_ci The result is an integer that holds the value of the handle before it is 7777db96d56Sopenharmony_ci detached. If the handle is already detached or closed, this will return 7787db96d56Sopenharmony_ci zero. 7797db96d56Sopenharmony_ci 7807db96d56Sopenharmony_ci After calling this function, the handle is effectively invalidated, but the 7817db96d56Sopenharmony_ci handle is not closed. You would call this function when you need the 7827db96d56Sopenharmony_ci underlying Win32 handle to exist beyond the lifetime of the handle object. 7837db96d56Sopenharmony_ci 7847db96d56Sopenharmony_ci .. audit-event:: winreg.PyHKEY.Detach key winreg.PyHKEY.Detach 7857db96d56Sopenharmony_ci 7867db96d56Sopenharmony_ci 7877db96d56Sopenharmony_ci.. method:: PyHKEY.__enter__() 7887db96d56Sopenharmony_ci PyHKEY.__exit__(*exc_info) 7897db96d56Sopenharmony_ci 7907db96d56Sopenharmony_ci The HKEY object implements :meth:`~object.__enter__` and 7917db96d56Sopenharmony_ci :meth:`~object.__exit__` and thus supports the context protocol for the 7927db96d56Sopenharmony_ci :keyword:`with` statement:: 7937db96d56Sopenharmony_ci 7947db96d56Sopenharmony_ci with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key: 7957db96d56Sopenharmony_ci ... # work with key 7967db96d56Sopenharmony_ci 7977db96d56Sopenharmony_ci will automatically close *key* when control leaves the :keyword:`with` block. 7987db96d56Sopenharmony_ci 7997db96d56Sopenharmony_ci 800