[Python-Dev] Proposal: Registry access for Python on Windows
Thomas Heller
thomas.heller@ion-tof.com
Tue, 1 Feb 2000 16:35:17 +0100
I propose to include functions to access the windows registry
into the python 1.6 core.
I have thrown together some code which I will post hopefully
tomorrow, but I would like to hear some comments before.
----------------------------------------------------------------------
winreg - registry access module
Constants:
HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER,
HKEY_USERS - bases of registry
KEY_READ, KEY_WRITE, KEY_ALL_ACCESS - access rights
REG_SZ, REG_DWORD, REG_BINARY - typecodes for values
Exception:
error - raised when a function fails. Will usually contain
a windows error code and a textual description.
Functions:
OpenKey (base, subkey, [, rights=KEY_READ]) -> integer
Opens an existing key with the specified access rights
and returns an integer handle. The handle must be closed
by a call to CloseKey().
CreateKey (base, subkey [, sam=KEY_ALL_ACCESS]) -> integer
Creates a new subkey or opens an exsiting one
and returns an integer handle.
base must be one of the HKEY_ constants or an integer handle.
The handle must be closed by a call to CloseKey().
CloseKey (handle)
Closes a key handle.
EnumValues (handle, subkey) -> sequence
Returns a sequence containing name, value, typecode triples
for each existing value.
EnumKeys (handle, subkey) -> sequence
Returns a sequence containing the names of all subkeys.
QueryValue (handle, subkey) -> tuple
Returns a tuple containing name, value and typecode.
SetValue (handle, name, typecode, value)
Sets the value of a name to value.
value must be a string for REG_SZ or REG_BINARY,
an integer for REG_DWORD.
DeleteValue (handle, valuename)
Deletes the value.
DeleteKey (handle, name [,recursive=0)
Deletes the named key if no subkeys exist. If recursive is
given as a true value, subkeys are recursively deleted.
This is done with Reg* calls, NOT with SHDeleteKey and
SHDeleteEmptyKey functions, so should work under any
flavor of NT and Win9x.
Note: To use the SetValue and Delete* functions, the key must have
been opened with KEY_WRITE_ACCESS or KEY_ALL_ACCESS.
----------------------------------------------------------------------
Open Questions:
Is the recursive-flag for DeleteKey() too dangerous?
Should I switch from an integer handle to a full blown
python-object, which would call CloseKey() automatically in the
destructor?
A higher level interface would be nice, but this should probably
implemented
on top of this module in python.
Comments appreciated!
Thomas Heller
ION-TOF GmbH