services: Initialize environment block immediately after startup.
Sebastian Lackner
sebastian at fds-team.de
Fri Apr 15 03:03:52 CDT 2016
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---
programs/services/services.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/programs/services/services.c b/programs/services/services.c
index 8f53e7e..0f8615f 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -724,17 +724,6 @@ static DWORD service_start_process(struct service_entry *service_entry)
service_lock(service_entry);
- if (!env)
- {
- HANDLE htok;
-
- if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY|TOKEN_DUPLICATE, &htok))
- CreateEnvironmentBlock(&env, htok, FALSE);
-
- if (!env)
- WINE_ERR("failed to create services environment\n");
- }
-
if ((err = get_service_binary_path(service_entry, &path)))
{
service_unlock(service_entry);
@@ -976,9 +965,20 @@ static void load_registry_parameters(void)
int main(int argc, char *argv[])
{
static const WCHAR svcctl_started_event[] = SVCCTL_STARTED_EVENT;
+ HANDLE htok;
DWORD err;
g_hStartedEvent = CreateEventW(NULL, TRUE, FALSE, svcctl_started_event);
+
+ if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY|TOKEN_DUPLICATE, &htok))
+ {
+ CreateEnvironmentBlock(&env, htok, FALSE);
+ CloseHandle(htok);
+ }
+
+ if (!env)
+ WINE_ERR("failed to create services environment\n");
+
load_registry_parameters();
err = scmdatabase_create(&active_database);
if (err != ERROR_SUCCESS)
--
2.7.1
More information about the wine-patches
mailing list