def valuestodict(key):
"""Convert a registry key's values to a dictionary."""
dict = {}
size = winreg.QueryInfoKey(key)[1]
for i in range(size):
data = winreg.EnumValue(key, i)
dict[data[0]] = data[1]
return dict
python类EnumValue()的实例源码
def _enumerate_reg_values(key):
return _RegKeyDict._enumerate_reg(key, _winreg.EnumValue)
def load(self):
if USE_WINDOWS:
import _winreg
try:
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, self.keyname)
except:
return
try:
self.values = {}
for j in range(1000):
try:
name, data, dtype = _winreg.EnumValue(key, j)
except EnvironmentError:
break
self.values[name] = str(data)
finally:
key.Close()
else:
try:
f = open(self.filename, 'r')
except (IOError, OSError):
return
try:
self.values = {}
for line in f.read().split("\n"):
if not '=' in line: continue
k, v = line.split("=", 1)
self.values[k.strip()] = v.strip()
finally:
f.close()
def __init__(self):
if self.info is not None:
return
info = []
try:
#XXX: Bad style to use so long `try:...except:...`. Fix it!
import _winreg
prgx = re.compile(r"family\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)" \
"\s+stepping\s+(?P<STP>\d+)", re.IGNORECASE)
chnd = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, self.pkey)
pnum = 0
while 1:
try:
proc = _winreg.EnumKey(chnd, pnum)
except _winreg.error:
break
else:
pnum += 1
info.append({"Processor": proc})
phnd = _winreg.OpenKey(chnd, proc)
pidx = 0
while True:
try:
name, value, vtpe = _winreg.EnumValue(phnd, pidx)
except _winreg.error:
break
else:
pidx = pidx + 1
info[-1][name] = value
if name == "Identifier":
srch = prgx.search(value)
if srch:
info[-1]["Family"] = int(srch.group("FML"))
info[-1]["Model"] = int(srch.group("MDL"))
info[-1]["Stepping"] = int(srch.group("STP"))
except:
print( str(sys.exc_info()) + '(ignoring)' )
self.__class__.info = info
def set_proxy(proxy_addr):
_,values_num,_ = winreg.QueryInfoKey(CONNECTIONS)
if values_num:
for i in range(0, values_num):
try:
key,value,_ = winreg.EnumValue(CONNECTIONS, i)
except:
break
if '://' in proxy_addr:
set_proxy_auto(proxy_addr, key)
else:
set_proxy_server(proxy_addr, key)
def windows_ports():
path = 'HARDWARE\\DEVICEMAP\\SERIALCOMM'
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path)
except WindowsError:
raise Exception
for i in itertools.count():
try:
val = winreg.EnumValue(key, i)
yield (str(val[1])) # , str(val[0]))
except EnvironmentError:
break
def valuesToDict(key):
"""Convert a registry key's values to a dictionary."""
dict={}
size=_winreg.QueryInfoKey(key)[1]
for i in xrange(size):
dict[_winreg.EnumValue(key, i)[0]]=_winreg.EnumValue(key, i)[1]
return dict
def serialList():
baselist=[]
if os.name=="nt":
try:
key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM")
i=0
while(1):
baselist+=[_winreg.EnumValue(key,i)[1]]
i+=1
except:
pass
baselist = baselist \
+ glob.glob("/dev/ttyUSB*") \
+ glob.glob("/dev/ttyACM*") \
+ glob.glob("/dev/tty.usb*") \
+ glob.glob("/dev/cu.*") \
+ glob.glob("/dev/cuaU*") \
+ glob.glob("/dev/rfcomm*")
additionalPorts = settings().get(["serial", "additionalPorts"])
for additional in additionalPorts:
baselist += glob.glob(additional)
prev = settings().get(["serial", "port"])
if prev in baselist:
baselist.remove(prev)
baselist.insert(0, prev)
if settings().getBoolean(["devel", "virtualPrinter", "enabled"]):
baselist.append("VIRTUAL")
return baselist
def readValues(keyPath):
# return Dict of name:value from key
explorer = OpenKey(HKEY_LOCAL_MACHINE, keyPath, 0, KEY_READ | KEY_WOW64_64KEY)
valuesDict = {}
for i in range(QueryInfoKey(explorer)[1]):
name, value, type = EnumValue(explorer, i)
valuesDict[name] = value
return valuesDict
def next(self):
try:
v = _winreg.EnumValue(self.key.hkey,self.index)
except WindowsError:
raise StopIteration
else:
self.index += 1
return Value(v[1],v[0],v[2])
def valuestodict(key):
"""Convert a registry key's values to a dictionary."""
dict = {}
size = winreg.QueryInfoKey(key)[1]
for i in range(size):
data = winreg.EnumValue(key, i)
dict[data[0]] = data[1]
return dict
def valuestodict(key):
"""Convert a registry key's values to a dictionary."""
dict = {}
size = winreg.QueryInfoKey(key)[1]
for i in range(size):
data = winreg.EnumValue(key, i)
dict[data[0]] = data[1]
return dict
def iteritems_data(self):
i = 0
# yield data
try:
while 1:
s, obj, objtype = _winreg.EnumValue(self.keyhandle, i)
yield s, self.massageIncomingRegistryValue((obj, objtype))
i += 1
except:
pass
def is_pseudo_protocal_key(input_key_name) :
key=None
try :
key=_winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT,input_key_name)
except : # Cannot Open This Key ..
return False
key_index=0
value_index=0
exist_value=False
exist_key=False
try :
while True :
value_name,value_value,value_type=_winreg.EnumValue(key,value_index)
value_index+=1
if 'URL Protocol'==value_name :
exist_value=True
except :
pass
try :
while True :
key_name=_winreg.EnumKey(key,key_index)
key_index+=1
if 'shell'==key_name :
try :
pseudo_protocal_command=_winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT,input_key_name+'\\shell\\open\\command')
exist_key=True
except :
pass
except :
pass
if exist_value and exist_key :
return True
return False
def get_pseudo_protocal_shell(key_name) :
pseudo_protocal_command_key=_winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT,key_name+'\\shell\\open\\command')
try :
value_name,value_value,value_type=_winreg.EnumValue(pseudo_protocal_command_key,0)
return value_value
except :
return '<except>'
def get_process(keyList):
try:
i = 0
while True:
name, value, type = _winreg.EnumValue(key,i)
keyList[str(name)] = value
i+=1
except WindowsError:
pass
return keyList
def valuestodict(key):
"""Convert a registry key's values to a dictionary."""
dict = {}
size = winreg.QueryInfoKey(key)[1]
for i in range(size):
data = winreg.EnumValue(key, i)
dict[data[0]] = data[1]
return dict
def getRegisterValueInAutoRun(key='audioTerm'):
import _winreg
try:
r = _winreg.OpenKey(
_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
p1,num,p3 = _winreg.QueryInfoKey(r)
for n in range(num):
p1,p2,p3 = _winreg.EnumValue(r,n)
if p1 == key:
return p2
except:
traceback.print_exc()
return None
def getRegisterValueInAutoRun(key='audioTerm'):
import _winreg
try:
r = _winreg.OpenKey(
_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
p1,num,p3 = _winreg.QueryInfoKey(r)
for n in range(num):
p1,p2,p3 = _winreg.EnumValue(r,n)
if p1 == key:
return p2
except:
traceback.print_exc()
return None
def valuestodict(key):
"""Convert a registry key's values to a dictionary."""
dict = {}
size = winreg.QueryInfoKey(key)[1]
for i in range(size):
data = winreg.EnumValue(key, i)
dict[data[0]] = data[1]
return dict