Я пытаюсь получить исполняемый файл, чтобы скопировать себя на рабочий стол и запустить копию. Для этого я использую CopyFile () и CreateProcessA (). Хотя код на самом деле работает, вызов CreateProcessA () внутри оператора if каким-то образом модифицирует постоянное целое число, являющееся частью условия if, вызывая выполнение операторов if и else. Я не очень понимаю, как это может произойти. Вот код
const int wtf {create_duplicate()};
if (wtf != 0) {
std::cout << "Duplicate created" << std::endl;
std::cout << wtf << " != 0 " << std::endl;
STARTUPINFO info {sizeof(info)};
PROCESS_INFORMATION processInfo;
if (CreateProcessA(R"(C:\Users\maxlu\Desktop\test.exe)", "",
nullptr, nullptr, true, 0,
nullptr, nullptr, &info, &processInfo)) {
WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}
} else {
std::cout << wtf << " == 0 " << std::endl;
std::cout << "Duplicate not created" << std::endl;
Это вывод кода:
Duplicate created
1 != 0
0 == 0
Duplicate not created