Я пытаюсь вызвать функцию CreateProcessW () для вызова команды dos icacls в моем коде C ++.Однако этот CreateProcessW () не отвечает правильно на команду icacls.Я могу сказать это, потому что для отрицательного тестирования я передал неправильную команду icacls функции CreateProcessW (), и она просто не выдавала никакой ошибки.
Однако в командной строке не удалось выполнить ту же команду
Я прилагаю код здесь
#include <vector>
#include <algorithm>
#include <atomic>
#include <memory>
#include <type_traits>
#include <Windows.h>
#include <iostream>
#include <string>
int main()
{
std::wstring command_line(L"icacls XXXCCCCC");//throws error with command prompt
STARTUPINFOW startup_info;
PROCESS_INFORMATION process_info;
size_t len(command_line.size());
std::vector<wchar_t> buff(len + 1);
std::copy(command_line.begin(), command_line.end(), buff.begin());
buff[len] = 0;
GetStartupInfoW(&startup_info);
BOOL result(CreateProcessW(nullptr, &buff[0], 0, 0, false, CREATE_NO_WINDOW, 0, 0,
&startup_info, &process_info));
if (!result)
{
std::cout << "FAIL" << std::endl;
std::wcout << " command line: <" << command_line << ">" << std::endl;
}
else
{
std::cout << "PASS" << std::endl;
std::wcout << " command line: <" << command_line << ">" << std::endl;
}
return 0;
}