If both the application name and the command line arguments are non-NULL, the null-terminated string pointed to by the application name argument specifies the module to execute, and the null-terminated string pointed to by the command line argument specifies the command line.
You have both these arguments specified and identical - are you sure this is correct for your call ?
That being correct I would have a closer look at your flags parameter.
As an example :
void foo()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset (&pi, 0, sizeof(pi));
memset (&si, 0, sizeof(si));
si.cb = sizeof(si);
si.dwFlags |=STARTF_USESHOWWINDOW;
si.wShowWindow|=SW_SHOWNORMAL;
if ( !CreateProcess (
NULL,
"C:\\pandora\\loves\\me\\sooogood.exe",
NULL,
NULL,
false,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi))
{
MessageBox(0, "Whoops'a Daisy.", "Error", MB_ICONSTOP);
}
{
CloseHandle(&pi.hProcess);
CloseHandle(&pi.hThread);
}