problema al consultar clave reg_multi_sz en registro de windows

Gabriel Genellina gagsl-py en yahoo.com.ar
Mar Feb 13 01:46:55 CET 2007


En Mon, 12 Feb 2007 20:27:28 -0300, Josu Rodriguez <jrvilda en gmail.com>  
escribió:

> Estoy teniendo problemas al consultar en un windows 2000, una clave del
> registro de windows.
> el codigo es el siguiente:
>
> from _winreg import *
> import sys
> #get the current value of the PendingFileRenameOperations key
>
> def getCurrentValue():
>     aReg = ConnectRegistry(None, HKEY_LOCAL_MACHINE)

Si es local esto no hace falta, se le puede pasar HKEY_LOCAL_MACHINE al  
OpenKey directamente.

>     aKey = OpenKey(aReg, "SYSTEM\CurrentControlSet\Control\Session  
> Manager")

Ojo con los \, en este caso no pasa nada porque \C y \S son invalidos,  
pero en general deberias usar \\ o bien r"...\..."

>     value=[]
>     value.append(QueryValueEx(aKey, "PendingFileRenameOperations"))

Segun la documentacion http://docs.python.org/lib/module--winreg.html ,
QueryValueEx devuelve un par (value, type), y en este caso especifico type  
es siempre REG_MULTI_SZ.

>     CloseKey(aKey)

Como con los archivos, el OpenKey/CloseKey deberian estar apareados y  
dentro de un try/finally.

Quedaría algo así entonces:

def getPendingFileRenameOperations():
    aKey = OpenKey(HKEY_LOCAL_MACHINE,  
r"SYSTEM\CurrentControlSet\Control\Session Manager")
    try:
        try: values = QueryValueEx(aKey, "PendingFileRenameOperations")[0]
        except WindowsError: values = ()
    finally:
        CloseKey(aKey)
    return values

Cuando el valor no esta presente, atrapa la excepcion y devuelve (), que  
parece lo mas conveniente en este caso.

-- 
Gabriel Genellina

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es