win32: move lookupreg() to windows.py

lookupreg() doesn't use the win32 API directly any more, it uses the Python
standard library module _winreg.
This commit is contained in:
Adrian Buehlmann 2012-05-27 11:29:52 +02:00
parent dae9e15d0a
commit 9ecfd4a916
2 changed files with 24 additions and 26 deletions

View File

@ -5,8 +5,7 @@
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
import encoding
import ctypes, errno, os, subprocess, random, _winreg
import ctypes, errno, os, subprocess, random
_kernel32 = ctypes.windll.kernel32
_advapi32 = ctypes.windll.advapi32
@ -244,27 +243,6 @@ def testpid(pid):
_kernel32.CloseHandle(h)
return _kernel32.GetLastError() != _ERROR_INVALID_PARAMETER
def lookupreg(key, valname=None, scope=None):
''' Look up a key/value name in the Windows registry.
valname: value name. If unspecified, the default value for the key
is used.
scope: optionally specify scope for registry lookup, this can be
a sequence of scopes to look up in order. Default (CURRENT_USER,
LOCAL_MACHINE).
'''
if scope is None:
scope = (_winreg.HKEY_CURRENT_USER, _winreg.HKEY_LOCAL_MACHINE)
elif not isinstance(scope, (list, tuple)):
scope = (scope,)
for s in scope:
try:
val = _winreg.QueryValueEx(_winreg.OpenKey(s, key), valname)[0]
# never let a Unicode string escape into the wild
return encoding.tolocal(val.encode('UTF-8'))
except EnvironmentError:
pass
def executablepath():
'''return full path of hg.exe'''
size = 600

View File

@ -6,14 +6,13 @@
# GNU General Public License version 2 or any later version.
from i18n import _
import osutil
import errno, msvcrt, os, re, sys
import osutil, encoding
import errno, msvcrt, os, re, sys, _winreg
import win32
executablepath = win32.executablepath
getuser = win32.getuser
hidewindow = win32.hidewindow
lookupreg = win32.lookupreg
makedir = win32.makedir
nlinks = win32.nlinks
oslink = win32.oslink
@ -316,4 +315,25 @@ class cachestat(object):
def cacheable(self):
return False
def lookupreg(key, valname=None, scope=None):
''' Look up a key/value name in the Windows registry.
valname: value name. If unspecified, the default value for the key
is used.
scope: optionally specify scope for registry lookup, this can be
a sequence of scopes to look up in order. Default (CURRENT_USER,
LOCAL_MACHINE).
'''
if scope is None:
scope = (_winreg.HKEY_CURRENT_USER, _winreg.HKEY_LOCAL_MACHINE)
elif not isinstance(scope, (list, tuple)):
scope = (scope,)
for s in scope:
try:
val = _winreg.QueryValueEx(_winreg.OpenKey(s, key), valname)[0]
# never let a Unicode string escape into the wild
return encoding.tolocal(val.encode('UTF-8'))
except EnvironmentError:
pass
expandglobs = True