Kaydet (Commit) 1027e3fd authored tarafından Greg Ward's avatar Greg Ward

Simplified Thomas Heller's registry patch: just assign all those

HKEY_* and Reg* names once, rather than having near-duplicate code
in the two import attempts.

Also dropped the leading underscore on all the imported symbols,
as it's not appropriate (they're not local to this module).
üst 7642f5cf
...@@ -20,30 +20,30 @@ from distutils.ccompiler import \ ...@@ -20,30 +20,30 @@ from distutils.ccompiler import \
_can_read_reg = 0 _can_read_reg = 0
try: try:
import winreg import winreg
_HKEY_CLASSES_ROOT = winreg.HKEY_CLASSES_ROOT
_HKEY_LOCAL_MACHINE = winreg.HKEY_LOCAL_MACHINE
_HKEY_CURRENT_USER = winreg.HKEY_CURRENT_USER
_HKEY_USERS = winreg.HKEY_USERS
_RegOpenKeyEx = winreg.OpenKeyEx
_RegEnumKey = winreg.EnumKey
_RegEnumValue = winreg.EnumValue
_RegError = winreg.error
_can_read_reg = 1 _can_read_reg = 1
hkey_mod = winreg # module that provides HKEY_* stuff
reg_mod = winreg # provides other registry stuff
except ImportError: except ImportError:
try: try:
import win32api import win32api
import win32con import win32con
_HKEY_CLASSES_ROOT = win32con.HKEY_CLASSES_ROOT
_HKEY_LOCAL_MACHINE = win32con.HKEY_LOCAL_MACHINE
_HKEY_CURRENT_USER = win32con.HKEY_CURRENT_USER
_HKEY_USERS = win32con.HKEY_USERS
_RegOpenKeyEx = win32api.RegOpenKeyEx
_RegEnumKey = win32api.RegEnumKey
_RegEnumValue = win32api.RegEnumValue
_RegError = win32api.error
_can_read_reg = 1 _can_read_reg = 1
hkey_mod = win32con
reg_mod = win32api
except ImportError: except ImportError:
pass pass
if _can_read_reg:
HKEY_CLASSES_ROOT = hkey_mod.HKEY_CLASSES_ROOT
HKEY_LOCAL_MACHINE = hkey_mod.HKEY_LOCAL_MACHINE
HKEY_CURRENT_USER = hkey_mod.HKEY_CURRENT_USER
HKEY_USERS = hkey_mod.HKEY_USERS
RegOpenKeyEx = reg_mod.RegOpenKeyEx
RegEnumKey = reg_mod.RegEnumKey
RegEnumValue = reg_mod.RegEnumValue
RegError = reg_mod.error
_can_read_reg = 1
def get_devstudio_versions (): def get_devstudio_versions ():
...@@ -58,22 +58,22 @@ def get_devstudio_versions (): ...@@ -58,22 +58,22 @@ def get_devstudio_versions ():
K = 'Software\\Microsoft\\Devstudio' K = 'Software\\Microsoft\\Devstudio'
L = [] L = []
for base in (_HKEY_CLASSES_ROOT, for base in (HKEY_CLASSES_ROOT,
_HKEY_LOCAL_MACHINE, HKEY_LOCAL_MACHINE,
_HKEY_CURRENT_USER, HKEY_CURRENT_USER,
_HKEY_USERS): HKEY_USERS):
try: try:
k = _RegOpenKeyEx(base,K) k = RegOpenKeyEx(base,K)
i = 0 i = 0
while 1: while 1:
try: try:
p = _RegEnumKey(k,i) p = RegEnumKey(k,i)
if p[0] in '123456789' and p not in L: if p[0] in '123456789' and p not in L:
L.append(p) L.append(p)
except _RegError: except RegError:
break break
i = i + 1 i = i + 1
except _RegError: except RegError:
pass pass
L.sort() L.sort()
L.reverse() L.reverse()
...@@ -97,16 +97,16 @@ def get_msvc_paths (path, version='6.0', platform='x86'): ...@@ -97,16 +97,16 @@ def get_msvc_paths (path, version='6.0', platform='x86'):
K = ('Software\\Microsoft\\Devstudio\\%s\\' + K = ('Software\\Microsoft\\Devstudio\\%s\\' +
'Build System\\Components\\Platforms\\Win32 (%s)\\Directories') % \ 'Build System\\Components\\Platforms\\Win32 (%s)\\Directories') % \
(version,platform) (version,platform)
for base in (_HKEY_CLASSES_ROOT, for base in (HKEY_CLASSES_ROOT,
_HKEY_LOCAL_MACHINE, HKEY_LOCAL_MACHINE,
_HKEY_CURRENT_USER, HKEY_CURRENT_USER,
_HKEY_USERS): HKEY_USERS):
try: try:
k = _RegOpenKeyEx(base,K) k = RegOpenKeyEx(base,K)
i = 0 i = 0
while 1: while 1:
try: try:
(p,v,t) = _RegEnumValue(k,i) (p,v,t) = RegEnumValue(k,i)
if string.upper(p) == path: if string.upper(p) == path:
V = string.split(v,';') V = string.split(v,';')
for v in V: for v in V:
...@@ -114,9 +114,9 @@ def get_msvc_paths (path, version='6.0', platform='x86'): ...@@ -114,9 +114,9 @@ def get_msvc_paths (path, version='6.0', platform='x86'):
L.append(v) L.append(v)
break break
i = i + 1 i = i + 1
except _RegError: except RegError:
break break
except _RegError: except RegError:
pass pass
return L return L
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment