Аутентифицироваться как администратор? - PullRequest
0 голосов
/ 20 июня 2011

Я разрабатываю установщик, и я хотел бы написать в папку, доступную только администраторам. Итак, мне нужно отобразить диалог UAC и пройти аутентификацию от имени администратора. Я знаю, что мог бы сделать это, имея отдельный исполняемый файл, который я запускаю из графического интерфейса установщика, но я бы предпочел решение, которое позволяет мне выполнять аутентификацию всякий раз, когда я хочу в приложении. Это возможно в .NET?

Ответы [ 3 ]

3 голосов
/ 20 июня 2011

Вы не можете изменить уровень привилегий в середине процесса: после запуска процесса он застревает на этом уровне привилегий. Вы должны запустить отдельный процесс с повышенными привилегиями и связаться с ним через IPC для обновления GUI.

Если вы пишете установщик, лучше всего отметить собственный манифест приложения установщика как само административные права, чтобы он запрашивал привилегии администратора при запуске, так как он вам понадобится каждый раз.

0 голосов
/ 20 июня 2011

В качестве альтернативы запуску нового процесса с повышенными правами вы можете создать новый COM-объект с повышенными правами.


Некоторые установщики используют подход, аналогичный тому, что вы пытаетесь сделать.Примером этого может быть foobar2000 installer .На первом экране спрашивается, где он будет: (все пользователи) или портативная установка.Если выбран стандарт, он запрашивает повышение прав и сам перезапускается.

Таким образом, вашей самой простой ставкой будет сбор данных от пользователя, а затем перезапуск самого себя или другого исполняемого файла в качестве администратора для выполнения фактической работы с передачей его параметров по выбору пользователя.

0 голосов
/ 20 июня 2011

Вы должны запустить новый процесс с этой конфигурацией для файла Manifest:

<security>
  <requestedPrivileges>
    <requestedExecutionLevel level="requireAdministrator" />
  </requestedPrivileges>
</security>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...