2008-05-25 04:45:51 -03:00
|
|
|
:mod:`winreg` -- Windows registry access
|
2007-08-15 11:28:22 -03:00
|
|
|
=========================================
|
|
|
|
|
2008-05-25 04:45:51 -03:00
|
|
|
.. module:: winreg
|
2007-08-15 11:28:22 -03:00
|
|
|
:platform: Windows
|
|
|
|
:synopsis: Routines and objects for manipulating the Windows registry.
|
|
|
|
.. sectionauthor:: Mark Hammond <MarkH@ActiveState.com>
|
|
|
|
|
|
|
|
|
|
|
|
These functions expose the Windows registry API to Python. Instead of using an
|
|
|
|
integer as the registry handle, a handle object is used to ensure that the
|
|
|
|
handles are closed correctly, even if the programmer neglects to explicitly
|
|
|
|
close them.
|
|
|
|
|
|
|
|
This module exposes a very low-level interface to the Windows registry; it is
|
|
|
|
expected that in the future a new ``winreg`` module will be created offering a
|
|
|
|
higher-level interface to the registry API.
|
|
|
|
|
|
|
|
This module offers the following functions:
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: CloseKey(hkey)
|
|
|
|
|
|
|
|
Closes a previously opened registry key. The hkey argument specifies a
|
|
|
|
previously opened key.
|
|
|
|
|
|
|
|
Note that if *hkey* is not closed using this method (or via
|
|
|
|
:meth:`handle.Close`), it is closed when the *hkey* object is destroyed by
|
|
|
|
Python.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: ConnectRegistry(computer_name, key)
|
|
|
|
|
|
|
|
Establishes a connection to a predefined registry handle on another computer,
|
|
|
|
and returns a :dfn:`handle object`
|
|
|
|
|
|
|
|
*computer_name* is the name of the remote computer, of the form
|
|
|
|
``r"\\computername"``. If ``None``, the local computer is used.
|
|
|
|
|
|
|
|
*key* is the predefined handle to connect to.
|
|
|
|
|
|
|
|
The return value is the handle of the opened key. If the function fails, an
|
|
|
|
:exc:`EnvironmentError` exception is raised.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: CreateKey(key, sub_key)
|
|
|
|
|
|
|
|
Creates or opens the specified key, returning a :dfn:`handle object`
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*sub_key* is a string that names the key this method opens or creates.
|
|
|
|
|
|
|
|
If *key* is one of the predefined keys, *sub_key* may be ``None``. In that
|
|
|
|
case, the handle returned is the same key handle passed in to the function.
|
|
|
|
|
|
|
|
If the key already exists, this function opens the existing key.
|
|
|
|
|
|
|
|
The return value is the handle of the opened key. If the function fails, an
|
|
|
|
:exc:`EnvironmentError` exception is raised.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: DeleteKey(key, sub_key)
|
|
|
|
|
|
|
|
Deletes the specified key.
|
|
|
|
|
|
|
|
*key* is an already open key, or any one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*sub_key* is a string that must be a subkey of the key identified by the *key*
|
|
|
|
parameter. This value must not be ``None``, and the key may not have subkeys.
|
|
|
|
|
|
|
|
*This method can not delete keys with subkeys.*
|
|
|
|
|
|
|
|
If the method succeeds, the entire key, including all of its values, is removed.
|
|
|
|
If the method fails, an :exc:`EnvironmentError` exception is raised.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: DeleteValue(key, value)
|
|
|
|
|
|
|
|
Removes a named value from a registry key.
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*value* is a string that identifies the value to remove.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: EnumKey(key, index)
|
|
|
|
|
|
|
|
Enumerates subkeys of an open registry key, returning a string.
|
|
|
|
|
|
|
|
*key* is an already open key, or any one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*index* is an integer that identifies the index of the key to retrieve.
|
|
|
|
|
|
|
|
The function retrieves the name of one subkey each time it is called. It is
|
|
|
|
typically called repeatedly until an :exc:`EnvironmentError` exception is
|
|
|
|
raised, indicating, no more values are available.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: EnumValue(key, index)
|
|
|
|
|
|
|
|
Enumerates values of an open registry key, returning a tuple.
|
|
|
|
|
|
|
|
*key* is an already open key, or any one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*index* is an integer that identifies the index of the value to retrieve.
|
|
|
|
|
|
|
|
The function retrieves the name of one subkey each time it is called. It is
|
|
|
|
typically called repeatedly, until an :exc:`EnvironmentError` exception is
|
|
|
|
raised, indicating no more values.
|
|
|
|
|
|
|
|
The result is a tuple of 3 items:
|
|
|
|
|
|
|
|
+-------+--------------------------------------------+
|
|
|
|
| Index | Meaning |
|
|
|
|
+=======+============================================+
|
|
|
|
| ``0`` | A string that identifies the value name |
|
|
|
|
+-------+--------------------------------------------+
|
|
|
|
| ``1`` | An object that holds the value data, and |
|
|
|
|
| | whose type depends on the underlying |
|
|
|
|
| | registry type |
|
|
|
|
+-------+--------------------------------------------+
|
|
|
|
| ``2`` | An integer that identifies the type of the |
|
|
|
|
| | value data |
|
|
|
|
+-------+--------------------------------------------+
|
|
|
|
|
|
|
|
|
Merged revisions 59843-59863 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59844 | raymond.hettinger | 2008-01-07 21:56:05 +0100 (Mon, 07 Jan 2008) | 1 line
Use get() instead of pop() for the optimized version of _replace().
........
r59847 | raymond.hettinger | 2008-01-07 22:33:51 +0100 (Mon, 07 Jan 2008) | 1 line
Documentation nits.
........
r59849 | raymond.hettinger | 2008-01-08 03:02:05 +0100 (Tue, 08 Jan 2008) | 1 line
Expand comment.
........
r59850 | raymond.hettinger | 2008-01-08 03:24:15 +0100 (Tue, 08 Jan 2008) | 1 line
Docs on named tuple's naming conventions and limits of subclassing
........
r59851 | christian.heimes | 2008-01-08 04:40:04 +0100 (Tue, 08 Jan 2008) | 1 line
It's verbose, not debug
........
r59852 | facundo.batista | 2008-01-08 13:25:20 +0100 (Tue, 08 Jan 2008) | 4 lines
Issue #1757: The hash of a Decimal instance is no longer affected
by the current context. Thanks Mark Dickinson.
........
r59853 | andrew.kuchling | 2008-01-08 15:30:55 +0100 (Tue, 08 Jan 2008) | 1 line
Patch 1137: allow assigning to .buffer_size attribute of PyExpat.parser objects
........
r59854 | andrew.kuchling | 2008-01-08 15:56:02 +0100 (Tue, 08 Jan 2008) | 1 line
Patch 1114: fix compilation of curses module on 64-bit AIX, and any other LP64 platforms where attr_t isn't a C long
........
r59856 | thomas.heller | 2008-01-08 16:15:09 +0100 (Tue, 08 Jan 2008) | 5 lines
Use relative instead of absolute filenames in the C-level tracebacks.
This prevents traceback prints pointing to files in this way:
File "\loewis\25\python\Modules\_ctypes\callbacks.c", line 206, in 'calling callback function'
........
r59857 | christian.heimes | 2008-01-08 16:46:10 +0100 (Tue, 08 Jan 2008) | 2 lines
Added __enter__ and __exit__ functions to HKEY object
Added ExpandEnvironmentStrings to the _winreg module.
........
r59858 | georg.brandl | 2008-01-08 17:18:26 +0100 (Tue, 08 Jan 2008) | 2 lines
Fix markup errors from r59857 and clarify key.__enter__/__exit__ docs
........
r59860 | georg.brandl | 2008-01-08 20:42:30 +0100 (Tue, 08 Jan 2008) | 2 lines
Better method for associating .py files with the interpreter.
........
r59862 | facundo.batista | 2008-01-08 22:10:12 +0100 (Tue, 08 Jan 2008) | 9 lines
Issue 846388. Adds a call to PyErr_CheckSignals to
SRE_MATCH so that signal handlers can be invoked during
long regular expression matches. It also adds a new
error return value indicating that an exception
occurred in a signal handler during the match, allowing
exceptions in the signal handler to propagate up to the
main loop. Thanks Josh Hoyt and Ralf Schmitt.
........
2008-01-08 20:17:24 -04:00
|
|
|
.. function:: ExpandEnvironmentStrings(unicode)
|
|
|
|
|
|
|
|
Expands environment strings %NAME% in unicode string like const:`REG_EXPAND_SZ`::
|
|
|
|
|
|
|
|
>>> ExpandEnvironmentStrings(u"%windir%")
|
|
|
|
u"C:\\Windows"
|
|
|
|
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. function:: FlushKey(key)
|
|
|
|
|
|
|
|
Writes all the attributes of a key to the registry.
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62914 | skip.montanaro | 2008-05-08 20:45:00 -0400 (Thu, 08 May 2008) | 4 lines
Add an example about using NamedTemporaryFile() to replace mktemp(). I'm
unclear whether the verbatim text should have been indented or by how much.
........
r62915 | benjamin.peterson | 2008-05-08 20:50:40 -0400 (Thu, 08 May 2008) | 2 lines
reindent example
........
r62927 | georg.brandl | 2008-05-09 02:09:25 -0400 (Fri, 09 May 2008) | 2 lines
#2788: add .hgignore file.
........
r62928 | georg.brandl | 2008-05-09 02:10:43 -0400 (Fri, 09 May 2008) | 2 lines
#2781: fix function name.
........
r62929 | georg.brandl | 2008-05-09 02:18:27 -0400 (Fri, 09 May 2008) | 2 lines
Add a sentence to basicConfig() that is in the docstring.
........
r62930 | georg.brandl | 2008-05-09 02:26:54 -0400 (Fri, 09 May 2008) | 2 lines
Add another link to colorsys docs.
........
r62931 | georg.brandl | 2008-05-09 02:36:07 -0400 (Fri, 09 May 2008) | 2 lines
Add Kodos as a re reference.
........
r62932 | georg.brandl | 2008-05-09 02:39:58 -0400 (Fri, 09 May 2008) | 2 lines
Add a note about using reload().
........
r62933 | andrew.kuchling | 2008-05-09 07:46:05 -0400 (Fri, 09 May 2008) | 3 lines
Update planned release date.
Uncomment PEP 370 section.
Add some module items
........
r62934 | christian.heimes | 2008-05-09 08:19:09 -0400 (Fri, 09 May 2008) | 1 line
Add --user option to build_ext
........
r62948 | mark.dickinson | 2008-05-09 13:54:23 -0400 (Fri, 09 May 2008) | 3 lines
Issue #2487. math.ldexp(x, n) raised OverflowError when n was large and
negative; fix to return an (appropriately signed) zero instead.
........
r62949 | martin.v.loewis | 2008-05-09 14:21:55 -0400 (Fri, 09 May 2008) | 1 line
Use the CHM file name that Sphinx assigns.
........
2008-05-15 19:09:29 -03:00
|
|
|
It is not necessary to call :func:`FlushKey` to change a key. Registry changes are
|
2007-08-15 11:28:22 -03:00
|
|
|
flushed to disk by the registry using its lazy flusher. Registry changes are
|
|
|
|
also flushed to disk at system shutdown. Unlike :func:`CloseKey`, the
|
|
|
|
:func:`FlushKey` method returns only when all the data has been written to the
|
|
|
|
registry. An application should only call :func:`FlushKey` if it requires
|
|
|
|
absolute certainty that registry changes are on disk.
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
If you don't know whether a :func:`FlushKey` call is required, it probably
|
|
|
|
isn't.
|
|
|
|
|
|
|
|
|
Merged revisions 62914-62916,62918-62919,62921-62922,62924-62942,62944-62945,62947-62949 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62914 | skip.montanaro | 2008-05-08 20:45:00 -0400 (Thu, 08 May 2008) | 4 lines
Add an example about using NamedTemporaryFile() to replace mktemp(). I'm
unclear whether the verbatim text should have been indented or by how much.
........
r62915 | benjamin.peterson | 2008-05-08 20:50:40 -0400 (Thu, 08 May 2008) | 2 lines
reindent example
........
r62927 | georg.brandl | 2008-05-09 02:09:25 -0400 (Fri, 09 May 2008) | 2 lines
#2788: add .hgignore file.
........
r62928 | georg.brandl | 2008-05-09 02:10:43 -0400 (Fri, 09 May 2008) | 2 lines
#2781: fix function name.
........
r62929 | georg.brandl | 2008-05-09 02:18:27 -0400 (Fri, 09 May 2008) | 2 lines
Add a sentence to basicConfig() that is in the docstring.
........
r62930 | georg.brandl | 2008-05-09 02:26:54 -0400 (Fri, 09 May 2008) | 2 lines
Add another link to colorsys docs.
........
r62931 | georg.brandl | 2008-05-09 02:36:07 -0400 (Fri, 09 May 2008) | 2 lines
Add Kodos as a re reference.
........
r62932 | georg.brandl | 2008-05-09 02:39:58 -0400 (Fri, 09 May 2008) | 2 lines
Add a note about using reload().
........
r62933 | andrew.kuchling | 2008-05-09 07:46:05 -0400 (Fri, 09 May 2008) | 3 lines
Update planned release date.
Uncomment PEP 370 section.
Add some module items
........
r62934 | christian.heimes | 2008-05-09 08:19:09 -0400 (Fri, 09 May 2008) | 1 line
Add --user option to build_ext
........
r62948 | mark.dickinson | 2008-05-09 13:54:23 -0400 (Fri, 09 May 2008) | 3 lines
Issue #2487. math.ldexp(x, n) raised OverflowError when n was large and
negative; fix to return an (appropriately signed) zero instead.
........
r62949 | martin.v.loewis | 2008-05-09 14:21:55 -0400 (Fri, 09 May 2008) | 1 line
Use the CHM file name that Sphinx assigns.
........
2008-05-15 19:09:29 -03:00
|
|
|
.. function:: LoadKey(key, sub_key, file_name)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Creates a subkey under the specified key and stores registration information
|
|
|
|
from a specified file into that subkey.
|
|
|
|
|
|
|
|
*key* is an already open key, or any of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*sub_key* is a string that identifies the sub_key to load.
|
|
|
|
|
|
|
|
*file_name* is the name of the file to load registry data from. This file must
|
|
|
|
have been created with the :func:`SaveKey` function. Under the file allocation
|
|
|
|
table (FAT) file system, the filename may not have an extension.
|
|
|
|
|
|
|
|
A call to LoadKey() fails if the calling process does not have the
|
|
|
|
:const:`SE_RESTORE_PRIVILEGE` privilege. Note that privileges are different than
|
|
|
|
permissions - see the Win32 documentation for more details.
|
|
|
|
|
|
|
|
If *key* is a handle returned by :func:`ConnectRegistry`, then the path
|
|
|
|
specified in *fileName* is relative to the remote computer.
|
|
|
|
|
|
|
|
The Win32 documentation implies *key* must be in the :const:`HKEY_USER` or
|
|
|
|
:const:`HKEY_LOCAL_MACHINE` tree. This may or may not be true.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: OpenKey(key, sub_key[, res=0][, sam=KEY_READ])
|
|
|
|
|
|
|
|
Opens the specified key, returning a :dfn:`handle object`
|
|
|
|
|
|
|
|
*key* is an already open key, or any one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*sub_key* is a string that identifies the sub_key to open.
|
|
|
|
|
|
|
|
*res* is a reserved integer, and must be zero. The default is zero.
|
|
|
|
|
|
|
|
*sam* is an integer that specifies an access mask that describes the desired
|
|
|
|
security access for the key. Default is :const:`KEY_READ`
|
|
|
|
|
|
|
|
The result is a new handle to the specified key.
|
|
|
|
|
|
|
|
If the function fails, :exc:`EnvironmentError` is raised.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: OpenKeyEx()
|
|
|
|
|
|
|
|
The functionality of :func:`OpenKeyEx` is provided via :func:`OpenKey`, by the
|
|
|
|
use of default arguments.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: QueryInfoKey(key)
|
|
|
|
|
|
|
|
Returns information about a key, as a tuple.
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
The result is a tuple of 3 items:
|
|
|
|
|
|
|
|
+-------+---------------------------------------------+
|
|
|
|
| Index | Meaning |
|
|
|
|
+=======+=============================================+
|
|
|
|
| ``0`` | An integer giving the number of sub keys |
|
|
|
|
| | this key has. |
|
|
|
|
+-------+---------------------------------------------+
|
|
|
|
| ``1`` | An integer giving the number of values this |
|
|
|
|
| | key has. |
|
|
|
|
+-------+---------------------------------------------+
|
2007-11-29 13:24:34 -04:00
|
|
|
| ``2`` | An integer giving when the key was last |
|
2007-08-15 11:28:22 -03:00
|
|
|
| | modified (if available) as 100's of |
|
|
|
|
| | nanoseconds since Jan 1, 1600. |
|
|
|
|
+-------+---------------------------------------------+
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: QueryValue(key, sub_key)
|
|
|
|
|
|
|
|
Retrieves the unnamed value for a key, as a string
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*sub_key* is a string that holds the name of the subkey with which the value is
|
|
|
|
associated. If this parameter is ``None`` or empty, the function retrieves the
|
|
|
|
value set by the :func:`SetValue` method for the key identified by *key*.
|
|
|
|
|
|
|
|
Values in the registry have name, type, and data components. This method
|
|
|
|
retrieves the data for a key's first value that has a NULL name. But the
|
|
|
|
underlying API call doesn't return the type, Lame Lame Lame, DO NOT USE THIS!!!
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: QueryValueEx(key, value_name)
|
|
|
|
|
|
|
|
Retrieves the type and data for a specified value name associated with an open
|
|
|
|
registry key.
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*value_name* is a string indicating the value to query.
|
|
|
|
|
|
|
|
The result is a tuple of 2 items:
|
|
|
|
|
|
|
|
+-------+-----------------------------------------+
|
|
|
|
| Index | Meaning |
|
|
|
|
+=======+=========================================+
|
|
|
|
| ``0`` | The value of the registry item. |
|
|
|
|
+-------+-----------------------------------------+
|
|
|
|
| ``1`` | An integer giving the registry type for |
|
|
|
|
| | this value. |
|
|
|
|
+-------+-----------------------------------------+
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: SaveKey(key, file_name)
|
|
|
|
|
|
|
|
Saves the specified key, and all its subkeys to the specified file.
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*file_name* is the name of the file to save registry data to. This file cannot
|
|
|
|
already exist. If this filename includes an extension, it cannot be used on file
|
|
|
|
allocation table (FAT) file systems by the :meth:`LoadKey`, :meth:`ReplaceKey`
|
|
|
|
or :meth:`RestoreKey` methods.
|
|
|
|
|
|
|
|
If *key* represents a key on a remote computer, the path described by
|
|
|
|
*file_name* is relative to the remote computer. The caller of this method must
|
|
|
|
possess the :const:`SeBackupPrivilege` security privilege. Note that
|
|
|
|
privileges are different than permissions - see the Win32 documentation for
|
|
|
|
more details.
|
|
|
|
|
|
|
|
This function passes NULL for *security_attributes* to the API.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: SetValue(key, sub_key, type, value)
|
|
|
|
|
|
|
|
Associates a value with a specified key.
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*sub_key* is a string that names the subkey with which the value is associated.
|
|
|
|
|
|
|
|
*type* is an integer that specifies the type of the data. Currently this must be
|
|
|
|
:const:`REG_SZ`, meaning only strings are supported. Use the :func:`SetValueEx`
|
|
|
|
function for support for other data types.
|
|
|
|
|
|
|
|
*value* is a string that specifies the new value.
|
|
|
|
|
|
|
|
If the key specified by the *sub_key* parameter does not exist, the SetValue
|
|
|
|
function creates it.
|
|
|
|
|
|
|
|
Value lengths are limited by available memory. Long values (more than 2048
|
|
|
|
bytes) should be stored as files with the filenames stored in the configuration
|
|
|
|
registry. This helps the registry perform efficiently.
|
|
|
|
|
|
|
|
The key identified by the *key* parameter must have been opened with
|
|
|
|
:const:`KEY_SET_VALUE` access.
|
|
|
|
|
|
|
|
|
|
|
|
.. function:: SetValueEx(key, value_name, reserved, type, value)
|
|
|
|
|
|
|
|
Stores data in the value field of an open registry key.
|
|
|
|
|
|
|
|
*key* is an already open key, or one of the predefined :const:`HKEY_\*`
|
|
|
|
constants.
|
|
|
|
|
|
|
|
*value_name* is a string that names the subkey with which the value is
|
|
|
|
associated.
|
|
|
|
|
|
|
|
*type* is an integer that specifies the type of the data. This should be one
|
|
|
|
of the following constants defined in this module:
|
|
|
|
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| Constant | Meaning |
|
|
|
|
+==================================+=============================================+
|
|
|
|
| :const:`REG_BINARY` | Binary data in any form. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_DWORD` | A 32-bit number. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_DWORD_LITTLE_ENDIAN` | A 32-bit number in little-endian format. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_DWORD_BIG_ENDIAN` | A 32-bit number in big-endian format. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_EXPAND_SZ` | Null-terminated string containing |
|
|
|
|
| | references to environment variables |
|
|
|
|
| | (``%PATH%``). |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_LINK` | A Unicode symbolic link. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_MULTI_SZ` | A sequence of null-terminated strings, |
|
|
|
|
| | terminated by two null characters. (Python |
|
|
|
|
| | handles this termination automatically.) |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_NONE` | No defined value type. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_RESOURCE_LIST` | A device-driver resource list. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
| :const:`REG_SZ` | A null-terminated string. |
|
|
|
|
+----------------------------------+---------------------------------------------+
|
|
|
|
|
|
|
|
*reserved* can be anything - zero is always passed to the API.
|
|
|
|
|
|
|
|
*value* is a string that specifies the new value.
|
|
|
|
|
|
|
|
This method can also set additional value and type information for the specified
|
|
|
|
key. The key identified by the key parameter must have been opened with
|
|
|
|
:const:`KEY_SET_VALUE` access.
|
|
|
|
|
|
|
|
To open the key, use the :func:`CreateKeyEx` or :func:`OpenKey` methods.
|
|
|
|
|
|
|
|
Value lengths are limited by available memory. Long values (more than 2048
|
|
|
|
bytes) should be stored as files with the filenames stored in the configuration
|
|
|
|
registry. This helps the registry perform efficiently.
|
|
|
|
|
|
|
|
|
|
|
|
.. _handle-object:
|
|
|
|
|
|
|
|
Registry Handle Objects
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
This object wraps a Windows HKEY object, automatically closing it when the
|
|
|
|
object is destroyed. To guarantee cleanup, you can call either the
|
|
|
|
:meth:`Close` method on the object, or the :func:`CloseKey` function.
|
|
|
|
|
|
|
|
All registry functions in this module return one of these objects.
|
|
|
|
|
|
|
|
All registry functions in this module which accept a handle object also accept
|
|
|
|
an integer, however, use of the handle object is encouraged.
|
|
|
|
|
|
|
|
Handle objects provide semantics for :meth:`__bool__` - thus ::
|
|
|
|
|
|
|
|
if handle:
|
2007-09-04 04:15:32 -03:00
|
|
|
print("Yes")
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
will print ``Yes`` if the handle is currently valid (has not been closed or
|
|
|
|
detached).
|
|
|
|
|
|
|
|
The object also support comparison semantics, so handle objects will compare
|
|
|
|
true if they both reference the same underlying Windows handle value.
|
|
|
|
|
|
|
|
Handle objects can be converted to an integer (e.g., using the builtin
|
|
|
|
:func:`int` function), in which case the underlying Windows handle value is
|
|
|
|
returned. You can also use the :meth:`Detach` method to return the integer
|
|
|
|
handle, and also disconnect the Windows handle from the handle object.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: PyHKEY.Close()
|
|
|
|
|
|
|
|
Closes the underlying Windows handle.
|
|
|
|
|
|
|
|
If the handle is already closed, no error is raised.
|
|
|
|
|
|
|
|
|
|
|
|
.. method:: PyHKEY.Detach()
|
|
|
|
|
|
|
|
Detaches the Windows handle from the handle object.
|
|
|
|
|
2007-11-29 13:41:05 -04:00
|
|
|
The result is an integer that holds the value of the handle before it is
|
|
|
|
detached. If the handle is already detached or closed, this will return
|
|
|
|
zero.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
After calling this function, the handle is effectively invalidated, but the
|
|
|
|
handle is not closed. You would call this function when you need the
|
|
|
|
underlying Win32 handle to exist beyond the lifetime of the handle object.
|
|
|
|
|
Merged revisions 59843-59863 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59844 | raymond.hettinger | 2008-01-07 21:56:05 +0100 (Mon, 07 Jan 2008) | 1 line
Use get() instead of pop() for the optimized version of _replace().
........
r59847 | raymond.hettinger | 2008-01-07 22:33:51 +0100 (Mon, 07 Jan 2008) | 1 line
Documentation nits.
........
r59849 | raymond.hettinger | 2008-01-08 03:02:05 +0100 (Tue, 08 Jan 2008) | 1 line
Expand comment.
........
r59850 | raymond.hettinger | 2008-01-08 03:24:15 +0100 (Tue, 08 Jan 2008) | 1 line
Docs on named tuple's naming conventions and limits of subclassing
........
r59851 | christian.heimes | 2008-01-08 04:40:04 +0100 (Tue, 08 Jan 2008) | 1 line
It's verbose, not debug
........
r59852 | facundo.batista | 2008-01-08 13:25:20 +0100 (Tue, 08 Jan 2008) | 4 lines
Issue #1757: The hash of a Decimal instance is no longer affected
by the current context. Thanks Mark Dickinson.
........
r59853 | andrew.kuchling | 2008-01-08 15:30:55 +0100 (Tue, 08 Jan 2008) | 1 line
Patch 1137: allow assigning to .buffer_size attribute of PyExpat.parser objects
........
r59854 | andrew.kuchling | 2008-01-08 15:56:02 +0100 (Tue, 08 Jan 2008) | 1 line
Patch 1114: fix compilation of curses module on 64-bit AIX, and any other LP64 platforms where attr_t isn't a C long
........
r59856 | thomas.heller | 2008-01-08 16:15:09 +0100 (Tue, 08 Jan 2008) | 5 lines
Use relative instead of absolute filenames in the C-level tracebacks.
This prevents traceback prints pointing to files in this way:
File "\loewis\25\python\Modules\_ctypes\callbacks.c", line 206, in 'calling callback function'
........
r59857 | christian.heimes | 2008-01-08 16:46:10 +0100 (Tue, 08 Jan 2008) | 2 lines
Added __enter__ and __exit__ functions to HKEY object
Added ExpandEnvironmentStrings to the _winreg module.
........
r59858 | georg.brandl | 2008-01-08 17:18:26 +0100 (Tue, 08 Jan 2008) | 2 lines
Fix markup errors from r59857 and clarify key.__enter__/__exit__ docs
........
r59860 | georg.brandl | 2008-01-08 20:42:30 +0100 (Tue, 08 Jan 2008) | 2 lines
Better method for associating .py files with the interpreter.
........
r59862 | facundo.batista | 2008-01-08 22:10:12 +0100 (Tue, 08 Jan 2008) | 9 lines
Issue 846388. Adds a call to PyErr_CheckSignals to
SRE_MATCH so that signal handlers can be invoked during
long regular expression matches. It also adds a new
error return value indicating that an exception
occurred in a signal handler during the match, allowing
exceptions in the signal handler to propagate up to the
main loop. Thanks Josh Hoyt and Ralf Schmitt.
........
2008-01-08 20:17:24 -04:00
|
|
|
.. method:: PyHKEY.__enter__()
|
|
|
|
PyHKEY.__exit__(\*exc_info)
|
|
|
|
|
|
|
|
The HKEY object implements :meth:`__enter__` and :meth:`__exit__` and thus
|
|
|
|
supports the context protocol for the :keyword:`with` statement::
|
|
|
|
|
|
|
|
with OpenKey(HKEY_LOCAL_MACHINE, "foo") as key:
|
|
|
|
# ... work with key ...
|
|
|
|
|
|
|
|
will automatically close *key* when control leaves the :keyword:`with` block.
|
|
|
|
|
|
|
|
|