PRB: CreateProcess() of Windows-Based Application Fails

ID: Q127860


The information in this article applies to:
  • Microsoft Win32 Application Programming Interface (API), included with:
    • Microsoft Windows NT 3.5


SYMPTOMS

When you spawn a 16-bit Windows-based application using CreateProcess() where neither lpApplicationName and lpCommandLine are NULL, WOW gives a popup saying:

Cannot find file (or one of its components). Check to ensure the path and filename are correct and that all required libraries are available.


CAUSE

NTVDM expects the first token in the command line (lpCommandLine) to be the program name, although the Win32 subsystem does not. The current design will not be changed.


RESOLUTION

Make lpApplicationName NULL and put the full command line in lpCommandLine.


STATUS

This behavior is by design.


MORE INFORMATION

The documentation for CreateProcess() states:

If the process to be created is an MS-DOS-based or Windows-based application, lpCommandLine should be a full command line in which the first element is the application name.
In this case (lpApplicationName is not NULL), lpCommandLine not only should be a full command line, but it must be a full command line.

If the 16-bit application resides on a UNC share and you are not willing to pass NULL for lpApplicationName, you must specify a fully-qualified path for lpApplicationName. An attempt to use a relative path for lpApplicationName still fails with the error listed at the beginning of this article.

Additional query words:

Keywords : kbSDKPlatform kbSDKWin32
Version : winnt:3.5
Platform : winnt
Issue type : kbprb


Last Reviewed: January 10, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.