[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
This commit is contained in:
Hermès Bélusca-Maïto 2012-12-18 20:38:54 +00:00
parent 3a6d338be3
commit 8e4c401495
2 changed files with 9 additions and 9 deletions

View file

@ -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)

View file

@ -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);