Ignore:
Timestamp:
Apr 3, 2001, 12:51:58 AM (24 years ago)
Author:
sandervl
Message:

check executable type in CreateProcess and use PEC for VIO and PE for GUI apps

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/wprocess.cpp

    r5354 r5448  
    1 /* $Id: wprocess.cpp,v 1.116 2001-03-22 18:16:41 sandervl Exp $ */
     1/* $Id: wprocess.cpp,v 1.117 2001-04-02 22:51:58 sandervl Exp $ */
    22
    33/*
     
    16511651    }
    16521652
    1653     dprintf(("KERNEL32:  CreateProcess %s\n", cmdline));
     1653    dprintf(("KERNEL32: CreateProcess %s\n", cmdline));
     1654   
     1655    DWORD Characteristics, SubSystem;
     1656    if(Win32ImageBase::isPEImage(exename, &Characteristics, &SubSystem)) {
     1657        dprintf(("CreateProcess: not a PE executable!!"));
     1658        SetLastError(ERROR_BAD_EXE_FORMAT);
     1659        return FALSE;
     1660    }
     1661
     1662    char *lpszPE;
     1663    if(SubSystem == IMAGE_SUBSYSTEM_WINDOWS_CUI) {
     1664         lpszPE = "PEC.EXE";
     1665    }
     1666    else lpszPE = "PE.EXE";
    16541667
    16551668    //SvL: Allright. Before we call O32_CreateProcess, we must take care of
     
    16591672
    16601673        newcmdline = (char *)malloc(strlen(lpCurrentDirectory) + strlen(cmdline) + 32);
    1661         sprintf(newcmdline, "PE.EXE /OPT:[CURDIR=%s] %s", lpCurrentDirectory, cmdline);
     1674        sprintf(newcmdline, "%s /OPT:[CURDIR=%s] %s", lpszPE, lpCurrentDirectory, cmdline);
    16621675        free(cmdline);
    16631676        cmdline = newcmdline;
     
    16671680
    16681681        newcmdline = (char *)malloc(strlen(cmdline) + 16);
    1669         sprintf(newcmdline, "PE.EXE %s", cmdline);
     1682        sprintf(newcmdline, "%s %s", lpszPE, cmdline);
    16701683        free(cmdline);
    16711684        cmdline = newcmdline;
    16721685    }
    1673     rc = O32_CreateProcess("PE.EXE", (LPCSTR)cmdline,lpProcessAttributes,
     1686    rc = O32_CreateProcess(lpszPE, (LPCSTR)cmdline,lpProcessAttributes,
    16741687                         lpThreadAttributes, bInheritHandles, dwCreationFlags,
    16751688                         lpEnvironment, lpCurrentDirectory, lpStartupInfo,
Note: See TracChangeset for help on using the changeset viewer.