Commit bd09340c authored by Alexandre Julliard's avatar Alexandre Julliard

user32: Don't start explorer.exe on non-visible window stations.

parent bd2ee68d
......@@ -1620,30 +1620,35 @@ HWND WINAPI GetDesktopWindow(void)
if (!thread_info->desktop)
{
static const WCHAR command_line[] = {'\\','e','x','p','l','o','r','e','r','.','e','x','e',' ','/','d','e','s','k','t','o','p',0};
STARTUPINFOW si;
PROCESS_INFORMATION pi;
WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)];
memset( &si, 0, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = 0;
si.hStdOutput = 0;
si.hStdError = GetStdHandle( STD_ERROR_HANDLE );
GetSystemDirectoryW( cmdline, MAX_PATH );
lstrcatW( cmdline, command_line );
if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
NULL, NULL, &si, &pi ))
{
TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId );
WaitForInputIdle( pi.hProcess, 10000 );
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
}
else WARN( "failed to start explorer, err %d\n", GetLastError() );
USEROBJECTFLAGS flags;
if (!GetUserObjectInformationW( GetProcessWindowStation(), UOI_FLAGS, &flags,
sizeof(flags), NULL ) || (flags.dwFlags & WSF_VISIBLE))
{
static const WCHAR command_line[] = {'\\','e','x','p','l','o','r','e','r','.','e','x','e',' ','/','d','e','s','k','t','o','p',0};
STARTUPINFOW si;
PROCESS_INFORMATION pi;
WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)];
memset( &si, 0, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdInput = 0;
si.hStdOutput = 0;
si.hStdError = GetStdHandle( STD_ERROR_HANDLE );
GetSystemDirectoryW( cmdline, MAX_PATH );
lstrcatW( cmdline, command_line );
if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
NULL, NULL, &si, &pi ))
{
TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId );
WaitForInputIdle( pi.hProcess, 10000 );
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
}
else WARN( "failed to start explorer, err %d\n", GetLastError() );
}
else TRACE( "not starting explorer since winstation is not visible\n" );
SERVER_START_REQ( get_desktop_window )
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment