services: Initialize environment block immediately after startup.

Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
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 @@
 
     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 @@
 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)