Call the application entry point from kernel32, some apps depend on
that.

diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c
index 858ad74..236b368 100644
--- a/dlls/kernel/process.c
+++ b/dlls/kernel/process.c
@@ -723,7 +723,23 @@
 {
     __TRY
     {
+        PEB *peb = NtCurrentTeb()->Peb;
+        IMAGE_NT_HEADERS *nt;
+        LPTHREAD_START_ROUTINE entry;
+
         LdrInitializeThunk( main_exe_file, CreateFileW, 0, 0 );
+
+        nt = RtlImageNtHeader( peb->ImageBaseAddress );
+        entry = (LPTHREAD_START_ROUTINE)((char *)peb->ImageBaseAddress +
+                                         nt->OptionalHeader.AddressOfEntryPoint);
+
+        if (TRACE_ON(relay))
+            DPRINTF( "%04lx:Starting process %s (entryproc=%p)\n", GetCurrentThreadId(),
+                     debugstr_w(peb->ProcessParameters->ImagePathName.Buffer), entry );
+
+        SetLastError( 0 );  /* clear error code */
+        if (peb->BeingDebugged) DbgBreakPoint();
+        ExitProcess( entry( peb ) );
     }
     __EXCEPT(UnhandledExceptionFilter)
     {