Alexandre Julliard : user32: Specify the full application path when starting builtin apps.
Alexandre Julliard
julliard at winehq.org
Tue Oct 27 09:46:32 CDT 2009
Module: wine
Branch: master
Commit: 5950c6af807da53fa80c53cbb308901df45fbc8a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5950c6af807da53fa80c53cbb308901df45fbc8a
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Oct 27 11:22:38 2009 +0100
user32: Specify the full application path when starting builtin apps.
---
dlls/user32/user_main.c | 8 +++++---
dlls/user32/win.c | 20 ++++++++++++--------
2 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/dlls/user32/user_main.c b/dlls/user32/user_main.c
index 516338c..ce55ff7 100644
--- a/dlls/user32/user_main.c
+++ b/dlls/user32/user_main.c
@@ -354,12 +354,14 @@ BOOL WINAPI ExitWindowsEx( UINT flags, DWORD reason )
static const WCHAR forceW[] = { ' ','-','-','f','o','r','c','e',0 };
static const WCHAR shutdownW[] = { ' ','-','-','s','h','u','t','d','o','w','n',0 };
+ WCHAR app[MAX_PATH];
WCHAR cmdline[MAX_PATH + 64];
PROCESS_INFORMATION pi;
STARTUPINFOW si;
- GetSystemDirectoryW( cmdline, MAX_PATH );
- lstrcatW( cmdline, winebootW );
+ GetSystemDirectoryW( app, MAX_PATH - sizeof(winebootW)/sizeof(WCHAR) );
+ strcatW( app, winebootW );
+ strcpyW( cmdline, app );
if (flags & EWX_FORCE) lstrcatW( cmdline, killW );
else
@@ -371,7 +373,7 @@ BOOL WINAPI ExitWindowsEx( UINT flags, DWORD reason )
memset( &si, 0, sizeof si );
si.cb = sizeof si;
- if (!CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si, &pi ))
+ if (!CreateProcessW( app, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si, &pi ))
{
ERR( "Failed to run %s\n", debugstr_w(cmdline) );
return FALSE;
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index d6746b0..9e42ff8 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -1852,11 +1852,13 @@ HWND WINAPI GetDesktopWindow(void)
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};
+ static const WCHAR explorer[] = {'\\','e','x','p','l','o','r','e','r','.','e','x','e',0};
+ static const WCHAR args[] = {' ','/','d','e','s','k','t','o','p',0};
STARTUPINFOW si;
PROCESS_INFORMATION pi;
- WCHAR systemdir[MAX_PATH];
- WCHAR cmdline[MAX_PATH + sizeof(command_line)/sizeof(WCHAR)];
+ WCHAR windir[MAX_PATH];
+ WCHAR app[MAX_PATH + sizeof(explorer)/sizeof(WCHAR)];
+ WCHAR cmdline[MAX_PATH + (sizeof(explorer) + sizeof(args))/sizeof(WCHAR)];
memset( &si, 0, sizeof(si) );
si.cb = sizeof(si);
@@ -1865,11 +1867,13 @@ HWND WINAPI GetDesktopWindow(void)
si.hStdOutput = 0;
si.hStdError = GetStdHandle( STD_ERROR_HANDLE );
- GetSystemDirectoryW( systemdir, MAX_PATH );
- lstrcpyW( cmdline, systemdir );
- lstrcatW( cmdline, command_line );
- if (CreateProcessW( NULL, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
- NULL, systemdir, &si, &pi ))
+ GetWindowsDirectoryW( windir, MAX_PATH );
+ strcpyW( app, windir );
+ strcatW( app, explorer );
+ strcpyW( cmdline, app );
+ strcatW( cmdline, args );
+ if (CreateProcessW( app, cmdline, NULL, NULL, FALSE, DETACHED_PROCESS,
+ NULL, windir, &si, &pi ))
{
TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId );
WaitForInputIdle( pi.hProcess, 10000 );
More information about the wine-cvs
mailing list