Создать процесс приостановить и UAC

0

У меня есть приложение inyector для сопоставления удаленной DLL в другой процесс. Процесс, который я пытаюсь вставить, имеет свой собственный манифест и требует прав администратора. Я пытаюсь использовать CreateProcess, так как я могу создать процесс в приостановленном состоянии, сделать свое сопоставление в удаленную память, а затем возобновить его.

Теперь, согласно MS, я могу использовать ShellExecute с глаголом runas, но это сразу начнет процесс. Существует ли какой-либо метод запроса пользователя на запуск процесса как администратора и в то же время создание процесса в приостановленном состоянии?.

  • 0
    Если ваш процесс не имеет прав администратора, он все равно не сможет изменить процесс с повышенными правами. Либо настройте вашу программу так, чтобы она требовала повышения прав, либо запустите подпроцесс с повышенными правами, чтобы выполнить работу от вашего имени.
Теги:

1 ответ

0
Лучший ответ

Если целевой исполняемый файл имеет манифест UAC, который указывает requiresAdminstrator вам не нужно ничего делать. Просто используйте CreateProcess() как правило, и пусть ОС справится с возвышением для вас. Elevation будет применена к новому процессу до того, как CreateProcess() вернет вам управление.

Вам нужно только поднять вручную, если целевой исполняемый файл НЕ имеет манифеста UAC, который вызывает повышение. В этом случае вы можете использовать что-то вроде CreateProcessElevated() если вы не хотите использовать ShellExecute/Ex().

  • 0
    Тогда проблема Visual Studio может быть, потому что я отлаживаю свой проект в VS, а CreateProcess возвращает, что у меня недостаточно прав.
  • 0
    Это заставляет меня думать, что вы не используете это правильно. Пожалуйста, покажите ваш фактический код. Вам не нужны специальные привилегии для создания нового процесса. Если вызывающий процесс не выполняется от имени администратора, UAC запросит у пользователя полные учетные данные. Если обработка вызова выполняется от имени администратора, UAC просто запросит разрешение вместо этого. В любом случае, UAC обрабатывает эти детали прозрачно, процесс вызова не должен знать или заботиться о них. Все, что его волнует, - это то, что создан новый процесс.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню