2013-09-17 4 views
3

Я работаю над проектом, который требует Права администратора после нажатия кнопки. , использующий в настоящее время C# и VB.NET. Ваш язык ответа зависит от вас, но лучше, если он находится в одном из них. :)Предоставление прав администратора во время выполнения

Я уже пробовал следующее:

  • глагола «Запуск от имени» с новым процессом, но проблема в том, что она повторно запускает приложение, которое означает, что потери всех текущих успехов и значение переменного.
  • редактирование файла манифеста, но I «не хотят принудительно» пользователь запускает приложение в качестве администратора.

Как ранее говорилось, право администратора требуется только при нажатии на кнопку. Если он никогда не был нажат, то не нужно никаких прав!

Итак, есть ли в любом случае предоставить права администратора во время выполнения через UAC, например. Без перезапуска приложения.

Я искал в Интернете, и все, что я получил методы уже упомянутые выше :)

Примечания: я нашел что-то похожее на то, что мне нужно в Microsoft Security Essential, где она способна предоставить администратор без запуска нового экземпляра приложения.

MSE can do it! Описание: При запуске MSE, по умолчанию, вы найдете в вкладки Истории что первого радио коробка выбрана. , изменяя это на любой другой вариант и предоставляя право не будет перезапустить приложение, поэтому обслуживание текущий состояние.

Любая помощь очень ценится.

+1

afaik: Вы не можете поднять ходовой процесс. Если у вас есть приложение, которое иногда запрашивает права администратора, а затем делает что-то без закрытия, это приложение обычно просто запускает новый процесс (для выполнения конкретной задачи) с правами администратора в фоновом режиме. – igrimpe

+0

спасибо, есть способ сказать, если приложение запустило ** новый процесс ** или временно ** приподняло ** сам. – Maher

ответ

11

Невозможно повысить срок службы в течение всего процесса. Независимо от того, выполняется ли ваш процесс при повышенном уровне, это зависит от времени запуска процесса.

Я нашел что-то похожее на то, что мне нужно в Microsoft Security Essential, где он может предоставить права администратора без запуска нового экземпляра приложения.

Нет, MSE будет выполнять повышенные задачи в отдельном процессе.

Вам не нужно закрывать существующий процесс и начинать новый. То, что вы ожидаете сделать, - это использовать отдельный процесс для выполнения только задач, требующих повышения. Этот отдельный процесс не должен показывать какой-либо пользовательский интерфейс. Повышенный процесс может оставаться скрытым и взаимодействовать с процессом, который отображает пользовательский интерфейс.Самый чистый способ достичь этого - поставить повышенные задачи внутри COM-сервера вне процесса и использовать CoCreateInstanceAsAdmin.

+0

+1 Ну, это интересно; может ли это означать, что есть способ для не-поднятого приложения общаться с MSE и отображать эти настройки администратора? В любом случае, скорее всего, эти настройки будут сохраняться в процессе повышенного уровня, так или иначе, даже если вам удастся заставить их показать их. – Groo

+0

@Groo Я не понимаю вопроса –

+0

Простите, я не рассмотрел пример OP достаточно тщательно. Я думал, что он говорит, что MSE запрашивает повышенные права, а затем показывает дополнительную вкладку или что-то, основанное на действии скрытого повышенного процесса. Другими словами, часть, в которой * повышенный процесс может оставаться скрытым и взаимодействовать с процессом [невыполненный], который отображает пользовательский интерфейс, заставлял меня думать, что функциональные возможности, требующие привилегий, могут фактически существовать в процессе * не приподнятого * и просто включаемый фоновым процессом. – Groo

Смежные вопросы