Profi_GMan
@Profi_GMan

Как запустить команду из system32 в обход uac?

Доброго времени суток!
Такая проблема: uac запрещает чтение и запись в папке system32 и из неё нельзя запускать команды(это моё предположение)
Приложение моё запускается от имени администратора. Мне нужно запускать bcdedit и получать его вывод и возвращаемое значение.
Пробовал через QProcess::start(), QProcess::startDetached и system(). Также пытался запустить батник, который запускал bcdedit. Ещё пытался указать полный путь до файла и в клвычках, и без. Но ничто из этого не заработало. Примечательно то, что с помощью того же QProcess::start я запускал mountvol и всё работало.
Как это исправить?
Огромное спасибо!
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
А тут что после неудачного запуска? QProcess::errorString()
Попробуйте задать полный путь к ехе файлу, или добавить папку где ехе файл в переменную PATH из environment в объекте QProcess.
Если запускаете из 32 битной программы 64 битную системную программу, то следует использовать функцию WinAPI Wow64EnableWow64FsRedirection для включения и выключения принудительных редиректов путей.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Pixilys
Я пытался подключить клавиатуру. Подключил вот так.
Работает, но я все таки попробую применить совершенно другой подход к моей задаче.

#include <QUrl>
#include <QDesktopServices>
#include <QProcess>

QProcess process;
QString path = "C:\\Windows\\System32\\osk.exe";
QDesktopServices::openUrl(QUrl::fromLocalFile(path));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы