diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 0e5001ad176..088de91de87 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -430,8 +430,7 @@ static DWORD WINAPI service_control_dispatcher(LPVOID arg) !(service->full_access_handle = OpenServiceW( manager, data, GENERIC_READ|GENERIC_WRITE ))) FIXME( "failed to open service %s\n", debugstr_w(data) ); } - result = service_handle_start(service, data + info.name_size, - data_size / sizeof(WCHAR) - info.name_size ); + result = service_handle_start(service, data, data_size / sizeof(WCHAR)); break; case WINESERV_SENDCONTROL: result = service_handle_control(service, info.control); diff --git a/programs/services/services.c b/programs/services/services.c index 5d8e40ffd50..d28e47e33f9 100644 --- a/programs/services/services.c +++ b/programs/services/services.c @@ -299,11 +299,8 @@ static void scmdatabase_autostart_services(struct scmdatabase *db) for (i = 0; i < size; i++) { DWORD err; - const WCHAR *argv[2]; service = services_list[i]; - argv[0] = service->name; - argv[1] = NULL; - err = service_start(service, 1, argv); + err = service_start(service, 0, NULL); if (err != ERROR_SUCCESS) WINE_FIXME("Auto-start service %s failed to start: %d\n", wine_dbgstr_w(service->name), err); diff --git a/programs/services/tests/service.c b/programs/services/tests/service.c index 5348bb95dc7..9de6085eab0 100644 --- a/programs/services/tests/service.c +++ b/programs/services/tests/service.c @@ -94,6 +94,10 @@ static void WINAPI service_main(DWORD argc, char **argv) SERVICE_STATUS status; BOOL res; + service_ok(argc == 1, "argc = %d", argc); + if(argc) + service_ok(!strcmp(argv[0], service_name), "argv[0] = %s, expected %s", argv[0], service_name); + service_handle = pRegisterServiceCtrlHandlerExA(service_name, service_handler, NULL); service_ok(service_handle != NULL, "RegisterServiceCtrlHandlerEx failed: %u\n", GetLastError()); if(!service_handle)