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