Правильный способ работы с UAC в C #

У меня есть приложение (служба Windows), которое установлено в каталог в папке Program Files. Наряду с этим приложением есть еще одно приложение WinForms, которое используется для настройки службы (среди прочего). Когда он выполняет настройку, он сохраняет изменения в файле конфигурации, который находится рядом со службой.

При работе в Vista / Win7 UAC не позволяет пользователю сохранять в файл конфигурации. Что бы я хотел сделать:

  • поместите значок щита рядом с пунктом меню, используемым для настройки
  • запроса разрешений UAC, когда этот элемент выбран
  • , отображать значок / приглашение только тогда, когда в ОС, которая требует этого
  • , отображать только значок / запрашивать, когда требуются разрешения (например, если приложение установлено где-то, где не требуется разрешение UAC)

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

Как я могу лучше всего этого добиться?

15
задан adrianbanks 13 October 2010 в 14:59
поделиться