Я только начал писать консольное приложение на C ++. Он выполняет некоторую проверку, а затем ему нужно найти и запустить исполняемый файл, который может находиться в разных местах в зависимости от того, как он был развернут. Таким образом, большая часть сценария работает, и даже часть выполнения работает в зависимости от ОС и местоположения. Если он локальный, он работает, а если он windows 7, то, похоже, работает даже на UN C. Но в Windows 10 он просто завершается.
Скрипт находит исполняемый файл и запускает его по пути, по которому он находится. Он работает, когда я создал приложение в виде пакетного файла и использует popD для перемещения к Расположение exe для рабочего каталога, но я не могу имитировать c эту функциональность в C ++. Я попытался SetCurrentDirectory
, но моя строка не пройдет, которую я пытаюсь передать.
if (version >= minver)
{
std::string name = "testApp.exe";
std::string path = (fs::current_path().string());
for (const auto& entry : fs::recursive_directory_iterator(path))
{
std::string list = entry.path().string();
int found;
if ((found = list.find(name)) !=list.npos)
{
std::cout << list << std::endl;
\\This is the part that sometimes works and sometimes doesn't
system(list.c_str());
}
}
}