diff --git a/base/system/services/database.c b/base/system/services/database.c index d773a44e102..8dbf148d43a 100644 --- a/base/system/services/database.c +++ b/base/system/services/database.c @@ -370,7 +370,7 @@ ScmLogonService( DPRINT("ScmLogonService(%p %p)\n", pService, pImage); DPRINT("Service %S\n", pService->lpServiceName); - if (ScmIsLocalSystemAccount(pImage->pszAccountName) || ScmLiveSetup) + if (ScmIsLocalSystemAccount(pImage->pszAccountName) || ScmLiveSetup || ScmSetupInProgress) return ERROR_SUCCESS; /* Get the user and domain names */ diff --git a/base/system/services/services.c b/base/system/services/services.c index b45ac07b745..fec54827b87 100644 --- a/base/system/services/services.c +++ b/base/system/services/services.c @@ -28,6 +28,7 @@ int WINAPI RegisterServicesProcess(DWORD ServicesProcessId); BOOL ScmInitialize = FALSE; BOOL ScmShutdown = FALSE; BOOL ScmLiveSetup = FALSE; +BOOL ScmSetupInProgress = FALSE; static HANDLE hScmShutdownEvent = NULL; static HANDLE hScmSecurityServicesEvent = NULL; @@ -55,6 +56,7 @@ CheckForLiveCD(VOID) WCHAR CommandLine[MAX_PATH]; HKEY hSetupKey; DWORD dwSetupType; + DWORD dwSetupInProgress; DWORD dwType; DWORD dwSize; DWORD dwError; @@ -107,6 +109,28 @@ CheckForLiveCD(VOID) ScmLiveSetup = TRUE; } + /* Read the SystemSetupInProgress value */ + dwSize = sizeof(DWORD); + dwError = RegQueryValueExW(hSetupKey, + L"SystemSetupInProgress", + NULL, + &dwType, + (LPBYTE)&dwSetupInProgress, + &dwSize); + if (dwError != ERROR_SUCCESS || + dwType != REG_DWORD || + dwSize != sizeof(DWORD) || + dwSetupType == 0) + { + goto done; + } + + if (dwSetupInProgress == 1) + { + DPRINT1("ReactOS Setup currently in progress!\n"); + ScmSetupInProgress = TRUE; + } + done: RegCloseKey(hSetupKey); diff --git a/base/system/services/services.h b/base/system/services/services.h index cbaa4a93329..204375c17c6 100644 --- a/base/system/services/services.h +++ b/base/system/services/services.h @@ -102,6 +102,7 @@ extern LIST_ENTRY ImageListHead; extern BOOL ScmInitialize; extern BOOL ScmShutdown; extern BOOL ScmLiveSetup; +extern BOOL ScmSetupInProgress; extern PSECURITY_DESCRIPTOR pPipeSD;