From 8e4c4014950da96548cc524719d523d4341c29ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 18 Dec 2012 20:38:54 +0000 Subject: [PATCH] [SERVICES] - services.exe is indeed a GUI program, so build it as such. - Check the return value of RegisterServicesProcess and thus allow only one instance of services.exe to be launched. CORE-6123 #resolve #comment Fixed by r57946. svn path=/trunk/; revision=57946 --- reactos/base/system/services/CMakeLists.txt | 2 +- reactos/base/system/services/services.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/reactos/base/system/services/CMakeLists.txt b/reactos/base/system/services/CMakeLists.txt index 006f5c46400..66fefbc89e5 100644 --- a/reactos/base/system/services/CMakeLists.txt +++ b/reactos/base/system/services/CMakeLists.txt @@ -25,7 +25,7 @@ if(NOT MSVC) target_link_libraries(services ${PSEH_LIB}) endif() -set_module_type(services win32cui UNICODE) +set_module_type(services win32gui UNICODE) add_importlibs(services user32 advapi32 rpcrt4 msvcrt kernel32 ntdll) add_pch(services services.h ${CMAKE_CURRENT_BINARY_DIR}/svcctl_s.h) add_cd_file(TARGET services DESTINATION reactos/system32 FOR all) diff --git a/reactos/base/system/services/services.c b/reactos/base/system/services/services.c index 982e0fbdeb3..1245fd373ed 100644 --- a/reactos/base/system/services/services.c +++ b/reactos/base/system/services/services.c @@ -8,10 +8,6 @@ * */ -/* NOTE: - * - Services.exe is NOT a native application, it is a GUI app. - */ - /* INCLUDES *****************************************************************/ #include "services.h" @@ -393,7 +389,7 @@ wWinMain(HINSTANCE hInstance, goto done; } - /* Create the service database */ + /* Create the services database */ dwError = ScmCreateServiceDatabase(); if (dwError != ERROR_SUCCESS) { @@ -401,11 +397,15 @@ wWinMain(HINSTANCE hInstance, goto done; } - /* Update service database */ + /* Update the services database */ ScmGetBootAndSystemDriverState(); - /* Register service process with CSRSS */ - RegisterServicesProcess(GetCurrentProcessId()); + /* Register the Service Control Manager process with CSRSS */ + if (!RegisterServicesProcess(GetCurrentProcessId())) + { + DPRINT1("SERVICES: Could not register SCM process\n"); + goto done; + } /* Acquire the service start lock until autostart services have been started */ dwError = ScmAcquireServiceStartLock(TRUE, &Lock);