У меня есть простая программа, которая читается в базовом файле конфигурации, который содержит предоставленный пользователем путь. Я пытаюсь использовать этот путь для вызова системы для выполнения .bat, который находится в указанном месте. Я могу передать сохраненный путь непосредственно в систему, и он пытается запустить .bat отлично, но ему нужно попробовать запустить его как администратор. Я наткнулся на следующее сообщение: How to call system() in an opened administrator program and gives it the same privileges?Правильный синтаксис пути для вызова системы() (как admin) для выполнения .bat из определенного места?
Я строю строку, как указано в приведенном выше сообщении, но когда я пытаюсь передать эту новую строку в систему, она сообщает мне: «Система не может найти указанный файл». Вот (скорее всего, неправильный) способ я строю строку, которую я передаю в систему.
std::string adminFilePath = "runas /user:<admin-user> \"";
adminFilePath.append(configFileSettings.path.c_str()); //Append the path of the file that we got from the config file.
adminFilePath.append("\"");
system(adminFilePath.c_str());
Мое предположение, что я должен пытаться построить основную строку, представляющую то, что я типа прямо в окне CMD, чтобы выполнить .bat, но, очевидно, я не так-то.
Если распечатать 'adminFilePath' это выглядит действительным? Что произойдет, если вы попытаетесь запустить его вручную? – NathanOliver
Когда я печатаю 'adminFilePath' это выглядит, как я жду его ... ' RunAs/пользователь: «C: \ Windows \ batFile.bat» ' Путь выглядит идентично отпечатке я выйдя из 'configFileSettings.path.c_str()' Если я вызываю 'system (configFileSettings.path.c_str()),' он отлично исполняет .bat. пытаясь вызвать 'system (adminFilePath.c_str());' приводит к тому, что «System не может найти указанный файл» –
WannabeCoder
Что произойдет, если вы просто скопируете его и используете 'system (R" (runas/user: "C: \ Windows \ batFile.bat ")"); '? Обратите внимание, что это функция C++ 11. –
NathanOliver