с помощью системной команды

У меня есть исполняемая программа, которая работает в нескольких компьютерах в сети. Сначала он получает имя хоста (pc-001 .. pc-013 и т. Д.). Затем мне нужно подключить сетевой диск (server1) на даже ПК и (server2) по шансам на основе имени своего хоста.

Моя проблема заключается в том, что я использую системный вызов для запуска команды dos net net use, например

system ("net use x: \\\\server1\\shares /user:username pass"); 

Как передать переменную имени пользователя? username – это имя хоста, которое я знаю, его значение и пропуск одинаковы для всех компьютеров.

    Вы можете создать команду, переданную system например,

      char cmdbuf[256]; snprintf(cmdbuf, sizeof(cmdbuf), "net use x: \\\\server1\\shares /user:%s %s", username, password); int err = system(cmdbuf); if (err) { fprintf(stderr, "failed to %s\n", cmdbuf); exit(EXIT_FAILURE); } 

    Будьте осторожны с данным username и password . Имя username подобное строке "user; somenaughtycommand" (без кавычек), даст вам кошмары. Остерегайтесь инъекций кода , поэтому проверьте, что как username и password каким-то образом действительны или соответствующим образом избегают их. Не забудьте проверить результат вызова system библиотеки.

    Вы можете проверить количество символов, помещенных в cmdbuf т.е. результат snprintf . Если это >= sizeof(cmdbuf) вам, вероятно, следует избегать вызова system !

    Используйте snprintf для создания командной строки перед ее использованием:

     char command[128]; snprintf(command, sizeof(command), "net use x: \\\\server1\\shares /user:%s %s", some_username, some_password); system(command);