一般的なエラーには、実行可能ファイルへのパスをCreateProcessの最初の引数として指定しないこと、および実行可能ファイルへのパスを2番目の引数で引用しないことが含まれます。
CreateProcess( <exe path goes here> , <quoted exe path plus parameters goes here>, ... );
そのようです:
std::wstring executable_string(_T("c:\\program files\\myprogram\\executable.exe"));
std::wstring parameters(_T("-param1 -param2"));
wchar_t path[MAX_PATH+3];
PathCanonicalize(path, executable_string.c_str());
path[sizeof(path)/sizeof(path[0]) - 1] = _T('\0');
// Make sure that the exe is specified without quotes.
PathUnquoteSpaces(path);
const std::wstring exe = path;
// Make sure that the cmdLine specifies the path to the executable using
// quotes if necessary.
PathQuoteSpaces(path);
std::wstring cmdLine = path + std::wstring(_T(" ")) + parameters;
BOOL res = CreateProcess(
exe.c_str(),
const_cast<wchar_t *>(cmdLine.c_str()),
...);
いくつかをコピーして適合させたばかりなので、上記にいくつかのエラーがあるかもしれませんが、アイデアはそこにあります。最初のパラメーターには引用符のないパスを使用し、2番目のパラメーターには引用符のあるパスを使用してください。問題はありません。