Я пытаюсь запустить процесс из моего кода с помощью функции createprocess. Командная строка в порядке, и другой exe, я могу запустить его без проблем из Visual Studio.
Когда я пытаюсь запустить его из другого процесса с помощью createprocess, он выдает мне сообщение — Ошибка времени выполнения. Это приложение запросило среду выполнения, чтобы завершить его необычным способом.
В чем может быть проблема ? Как я мог удалить эту проблему?
STARTUPINFO si;
PROCESS_INFORMATION pi;
bool bResult;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
//Cast System::String* __gc to char*
char* chAppName = (char*)(void*)Marshal::StringToHGlobalAnsi(AppName);
char* chCmdLine = (char*)(void*)Marshal::StringToHGlobalAnsi(CmdLine);//Start the child process.
bResult = CreateProcess( chAppName, // No module name (use command line)
chCmdLine, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi); // Pointer to PROCESS_INFORMATION structure
Попробуйте устранить StringToHGlobalAnsi
звонки и жесткое их кодирование вместо первого. Если это останавливает проблемы, мы можем разобраться StringToHGlobalAnsi
звонки.
Других решений пока нет …