`netsh trace start ...` не работает с вызовами system (), CreateProcess () и ShellExecute () - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь сделать собственный Packet Sniffer на C ++, используя платформу Visual Studio, без установки какого-либо стороннего инструмента, библиотеки или программного обеспечения.Поэтому для этого я использую следующую команду:

netsh trace start persistent=yes capture=yes tracefile="<path to the file>"

Ниже приведены 3 команды, которые я попробовал.

  1. system("netsh trace start persistent=yes capture=yes");

  2. ShellExecute(0, "open", "cmd.exe", "netsh trace start persistent=yes capture=yes", NULL, SW_SHOW);

  3. CreateProcessA("C:\\Windows\\System32\\netsh.exe", "trace start persistent=yes capture=yes", 0, 0, FALSE, CREATE_DEFAULT_ERROR_MODE, 0, 0, &siStartupInfo, &piProcessInfo)

Проблема заключается в том, что командная строка просто выполняет команду netsh, а затем не распознает остальную часть команды и аргументы, следующие за netsh, т. Е. Она не распознает часть trace start persistent=yes capture=yes.Приветствуется любая помощь в запуске всей команды на ходу.

Если тот же анализ пакетов можно выполнить с помощью некоторой библиотеки C ++ без установки какого-либо стороннего инструмента, это также будет полезно.Любая помощь для того же самого также высоко ценится.

TIA

PS: есть способы выполнить эту команду в виде пакетного файла, но это не является частью моей постановки проблемы.

...