Microsoft KB Archive/127860

{|
 * width="100%"|

PRB: CreateProcess of Windows-Based Application Fails

 * }

Q127860

-

The information in this article applies to:


 * Microsoft Win32 Application Programming Interface (API), included with:
 * the operating system: 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

Issue type : kbprb

Technology : kbAudDeveloper kbWin32sSearch kbWin32API