mercurial/util_win32.py
changeset 6006 3c9dbb743d20
parent 5969 821fc5c0656c
child 6012 e45de0f47215
equal deleted inserted replaced
6005:3c33032d8906 6006:3c9dbb743d20
   185             return status == win32con.STILL_ACTIVE
   185             return status == win32con.STILL_ACTIVE
   186     except pywintypes.error, details:
   186     except pywintypes.error, details:
   187         return details[0] != winerror.ERROR_INVALID_PARAMETER
   187         return details[0] != winerror.ERROR_INVALID_PARAMETER
   188     return True
   188     return True
   189 
   189 
       
   190 def lookup_reg(key, valname=None, scope=None):
       
   191     ''' Look up a key/value name in the Windows registry.
       
   192 
       
   193     valname: value name. If unspecified, the default value for the key
       
   194     is used.
       
   195     scope: optionally specify scope for registry lookup, this can be
       
   196     a sequence of scopes to look up in order. Default (CURRENT_USER,
       
   197     LOCAL_MACHINE).
       
   198     '''
       
   199     try:
       
   200         from _winreg import HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, \
       
   201             QueryValueEx, OpenKey
       
   202     except ImportError:
       
   203         return None
       
   204 
       
   205     def query_val(scope, key):
       
   206         try:
       
   207             keyhandle = OpenKey(scope, key)
       
   208             return QueryValueEx(keyhandle, valname)[0]
       
   209         except EnvironmentError:
       
   210             return None
       
   211 
       
   212     if scope is None:
       
   213         scope = (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE)
       
   214     elif not isinstance(scope, (list, tuple)):
       
   215         scope = (scope,)
       
   216     for s in scope:
       
   217         val = query_val(s, key, valname)
       
   218         if val is not None:
       
   219             return val
       
   220 
   190 def system_rcpath_win32():
   221 def system_rcpath_win32():
   191     '''return default os-specific hgrc search path'''
   222     '''return default os-specific hgrc search path'''
   192     proc = win32api.GetCurrentProcess()
   223     proc = win32api.GetCurrentProcess()
   193     try:
   224     try:
   194         # This will fail on windows < NT
   225         # This will fail on windows < NT