Неправильная команда icacls не выдает никакой ошибки при вызове функцией CreateProcessW - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь вызвать функцию 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;
}
...