#include <userenv.h>
#include <strsafe.h>
+#include <reactos/undocuser.h>
+
#define NDEBUG
#include <debug.h>
if ((NoInteractiveServices == 0) &&
(Service->Status.dwServiceType & SERVICE_INTERACTIVE_PROCESS))
{
+ StartupInfo.dwFlags |= STARTF_INHERITDESKTOP;
StartupInfo.lpDesktop = L"WinSta0\\Default";
}
ZeroMemory(&StartupInfo, sizeof(STARTUPINFOW));
ZeroMemory(&ProcessInformation, sizeof(PROCESS_INFORMATION));
StartupInfo.cb = sizeof(STARTUPINFOW);
- StartupInfo.dwFlags = STARTF_SCRNSAVER;
+ StartupInfo.dwFlags = STARTF_SCREENSAVER;
/* FIXME: run the screen saver on the screen saver desktop */
ret = CreateProcessW(szApplicationName,
#define DFCS_MENUARROWUP 0x0008
#define DFCS_MENUARROWDOWN 0x0010
-
-#define STARTF_SCRNSAVER 0x80000000
+//
+// Undocumented flags for CreateProcess
+//
+#define STARTF_INHERITDESKTOP 0x40000000
+#define STARTF_SCREENSAVER 0x80000000
#define MOD_WINLOGON_SAS 0x8000
/* Setup process flags */
ppiCurrent->W32PF_flags |= W32PF_PROCESSCONNECTED;
- if ( Process->Peb->ProcessParameters &&
- Process->Peb->ProcessParameters->WindowFlags & STARTF_SCRNSAVER )
+ if (Process->Peb->ProcessParameters &&
+ (Process->Peb->ProcessParameters->WindowFlags & STARTF_SCREENSAVER))
{
ppiScrnSaver = ppiCurrent;
ppiCurrent->W32PF_flags |= W32PF_SCREENSAVER;
Status = IntResolveDesktop(Process,
&DesktopPath,
- FALSE,
+ !!(ProcessParams->WindowFlags & STARTF_INHERITDESKTOP),
&hWinSta,
&hDesk);