[Distutils] Proposal: Registry access for Python on Windows

Robin Becker robin@jessikat.demon.co.uk
Tue, 1 Feb 2000 16:22:17 +0000

In article <02a501bf6cc9$f1681620$4500a8c0@thomasnotebook>, Thomas
Heller <thomas.heller@ion-tof.com> writes
>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.

aaaaaargghhhhh just when I had thrown some code together to use the
win32api stuff. mumble dribble 

>winreg - registry access module
>  HKEY_USERS - bases of registry
>  KEY_READ, KEY_WRITE, KEY_ALL_ACCESS - access rights
>  REG_SZ, REG_DWORD, REG_BINARY - typecodes for values
>  error - raised when a function fails. Will usually contain
>    a windows error code and a textual description.
>  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
>  A higher level interface would be nice, but this should probably
>  on top of this module in python.
>Comments appreciated!
>Thomas Heller
>Distutils-SIG maillist  -  Distutils-SIG@python.org

Robin Becker