Проблема, с которой я столкнулся, заключается в том, что когда я запускаю экземпляр командной строки из моего кода, кажется, что отсутствуют файлы, которые обычно должны существовать.
Вот фотография, которая ясно показывает проблему:
Ссылка на изображение: https://image.prntscr.com/image/5yylGu-WQoKddilN9mu8Tg.png
Как вы можете видеть, CMD, запущенный через мою программу, «пропускает» около тысячи файлов, что другие обычные экземпляры CMD - нет.
То, что я пытался решить, - это изменить архитектуру, в которой я строю исполняемый файл (я пробовал x32 и x64) без каких-либо изменений.
Кроме того, я попытался использовать различные функции для запускакомандная строка, такая как system
и WinExec
, также безуспешно.
Код, который я использую для запуска экземпляра CMD внутри моей программы, следующий:
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi;
if (!CreateProcessA("C:\\WINDOWS\\System32\\cmd.exe",
"",
NULL, NULL, 0, 0, NULL, NULL, &si, &pi))
{
printf("CreateProcess failed (%d).\n", GetLastError());
}
Код выполняется успешно без каких-либо ошибок, но результат команды dir
в папке System32 показывает вывод, который я захватил на фотографии выше;показываются только 3.011 из 4.782 файлов.
Поэтому мой вопрос: почему это происходит, и в какую ловушку я попал.