Я использую API CreateProcess для запуска командного файла. Код прекрасно работает в Windows 7, но не работает в Windows 10.
Ниже приведен фрагмент кода:
CString param; //it holds the very long string of command line arguments
wstring excFile = L"C:\\program files\\BatchFile.bat";
wstring csExcuPath = L"C:\\program files";
wstring exeWithParam = excFile + _T(" ");
exeWithParam = exeWithParam.append(param);
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
TCHAR lpExeWithParam[8191];
_tcscpy_s(lpExeWithParam, exeWithParam.c_str());
BOOL bStatus = CreateProcess(NULL, lpExeWithParam, NULL, NULL, TRUE, CREATE_NEW_CONSOLE | CREATE_BREAKAWAY_FROM_JOB, NULL, csExcuPath.c_str(), &si, &pi);
DWORD err;
if (!bStatus)
{
err = GetLastError();
}
С помощью приведенного выше кода он вызывает командный файл, который запускает исполняемый файл с заданными параметрами. Этот код не работает только Windows 10 в нашем продукте.
GetLastError возвращает код ошибки 122, код ошибки: «Область данных, переданная системному вызову, слишком мала». Как выяснить, что вызывает эту ошибку и как ее можно устранить?
Однако при использовании одного и того же кода в примере тестовое приложение не выдает никакой ошибки и прохождения.
Любая подсказка / подсказка, почему это вызывает сбой в Windows 10.