diff --git a/actors/src/udsactor/linux/store.py b/actors/src/udsactor/linux/store.py index ca2d5d17d..dd5e6efec 100644 --- a/actors/src/udsactor/linux/store.py +++ b/actors/src/udsactor/linux/store.py @@ -78,3 +78,6 @@ def writeConfig(data): cfg.write(f) os.chmod(CONFIGFILE, 0o0600) + +def useOldJoinSystem(): + return False diff --git a/actors/src/udsactor/windows/UDSActorService.py b/actors/src/udsactor/windows/UDSActorService.py index 291ffd0ab..10d1ca5b5 100644 --- a/actors/src/udsactor/windows/UDSActorService.py +++ b/actors/src/udsactor/windows/UDSActorService.py @@ -43,6 +43,7 @@ import servicemanager # @UnresolvedImport, pylint: disable=import-error import os from udsactor import operations +from udsactor import store from udsactor.service import CommonService from udsactor.service import initCfg @@ -158,10 +159,12 @@ class UDSActorSvc(win32serviceutil.ServiceFramework, CommonService): ver = ver[0] * 10 + ver[1] logger.debug('Starting joining domain {} with name {} (detected operating version: {})'.format( domain, name, ver)) + # If file c:\compat.bin exists, joind domain in two steps instead one + # Accepts one step joinDomain, also remember XP is no more supported by # microsoft, but this also must works with it because will do a "multi # step" join - if ver >= 60: + if ver >= 60 and store.useOldJoinSystem() is False: self.oneStepJoin(name, domain, ou, account, password) else: self.multiStepJoin(name, domain, ou, account, password) diff --git a/actors/src/udsactor/windows/store.py b/actors/src/udsactor/windows/store.py index 2f2899ec8..08c54d4f1 100644 --- a/actors/src/udsactor/windows/store.py +++ b/actors/src/udsactor/windows/store.py @@ -82,7 +82,6 @@ def readConfig(): except Exception: return None - def writeConfig(data, fixPermissions=True): try: key = wreg.OpenKey(baseKey, path, 0, wreg.KEY_ALL_ACCESS) # @UndefinedVariable @@ -93,3 +92,16 @@ def writeConfig(data, fixPermissions=True): wreg.SetValueEx(key, "", 0, wreg.REG_BINARY, encoder(cPickle.dumps(data))) # @UndefinedVariable wreg.CloseKey(key) # @UndefinedVariable + +def useOldJoinSystem(): + try: + key = wreg.OpenKey(baseKey, 'Software\\UDSEnterpriseActor', 0, wreg.KEY_QUERY_VALUE) # @UndefinedVariable + try: + data, _ = wreg.QueryValueEx(key, 'join') # @UndefinedVariable + except Exception: + data = '' + wreg.CloseKey(key) # @UndefinedVariable + except: + data = '' + + return data == 'old'