Dir - команда, которую выполняет cmd.exe; не программа, которую вы можете выполнить с помощью CreateProcess. Таким образом, чтобы сделать то, что вы хотите, вам нужно запустить cmd.exe и передать ему «dir» в командной строке. Самый простой способ сделать это с помощью системной функции. Ваша программа должна выглядеть примерно так:
#include <process.h>
int main(int argc, char *argv[])
{
system(argv[1]);
}
Очевидно, вам нужно добавить проверку ошибок, но это должно делать то, что вы хотите.
Вот рабочий пример использования CreateProcess. Обратите внимание, что флаг / k указывает cmd.exe оставаться открытым после выполнения команды. Если вы хотите, чтобы она выполнила команду и затем вышла, измените / k на /c.
#include <windows.h>
void main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
CreateProcess(NULL,
"cmd.exe /k dir",
NULL,
NULL,
FALSE,
CREATE_NEW_CONSOLE,
NULL,
NULL,
&si,
&pi );
}