CreateProcess возвращает true, но не выполняется с regedit

Я пытаюсь сбросить часть реестра Windows в файл .txt с помощью CreateProcess функция. Код по линии

PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

CString cmdLine = "\"C:\\WINDOWS\\regedit.exe\" /e \"c:\\dump\\TestReg.txt\"\"HKEY_LOCAL_MACHINE\\SOFTWARE\\MYSOFT\\\"";
LPSTR pCmdLine = (LPSTR)(const char*)cmdLine;
BOOL oc = CreateProcess(NULL, pCmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if(oc == TRUE)
{
WaitForSingleObject(pi.hProcess, 1000);
GetExitCodeProcess(pi.hProcess, &exitCode);
if(exitCode != 0) ret = -1;
}

Что я знаю

  • CreateProcess возвращается TRUE и последние блоки выполняются
  • Процесс ждет конца и нормально завершается
  • Однако в конце файл не создается
  • Строка командной строки отлично работает в командной строке, даже если она работает из того же каталога, где работает программа.
  • Я нашел то, что потенциально полезным где у кого-то была в основном такая же проблема. В конце концов это привело к конфликту зависимостей, но ссылка не очень хорошо объясняет, как это было обнаружено или исправлено.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]