PRB: CreateProcess() of Windows-Based Application Fails (127860)



The information in this article applies to:

  • Microsoft Win32 Application Programming Interface (API), when used with:
    • the operating system: Microsoft Windows NT 3.5

This article was previously published under Q127860

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.

Modification Type:MajorLast Reviewed:10/30/2003
Keywords:kbprb KB127860