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