Сведения о вопросе

Fhohir

08:21, 24th August, 2020

Теги

Запрос Windows Vista UAC высоты, если путь защищен?

Просмотров: 395   Ответов: 6

Для моего приложения C# я не хочу всегда запрашивать повышение прав при запуске приложения,но если они выбирают выходной путь, который защищен UAC, то мне нужно запросить повышение прав.

Итак, как я могу проверить, защищен ли путь UAC, а затем запросить повышение высоты в середине выполнения?



  Сведения об ответе

#hash

09:21, 6th August, 2020

Лучший способ определить, не могут ли они выполнить действие, - это попытаться выполнить его и поймать UnauthorizedAccessException .

Однако, как правильно указывает @ DannySmurf , вы можете поднять только объект COM или отдельный процесс.

Существует демонстрационное приложение в рамках образцов Кросс-технологии Windows SDK под названием UAC Demo . Это демонстрационное приложение показывает метод выполнения действий с повышенным уровнем процесса. Он также демонстрирует, как узнать, является ли пользователь в настоящее время администратором.


  Сведения об ответе

lesha

07:42, 9th August, 2020

Запрос высоты в середине выполнения требует, чтобы вы либо:

  1. Используйте повышенный элемент управления COM, который выведет запрос
  2. Запустите второй процесс, который повышен с самого начала.

В .NET в настоящее время нет способа повысить уровень запущенного процесса; вы должны сделать одну из вышеперечисленных хакерских вещей, но все, что делает пользователь, - это создает видимость того, что текущий процесс повышается.

Единственный способ, который я могу придумать, чтобы проверить, является ли путь UAC повышенным, - это попытаться сделать какую-то тривиальную запись в него, пока вы находитесь в не повышенном состоянии, поймать исключение, поднять и повторить попытку.


  Сведения об ответе

lool

23:50, 19th August, 2020

Я не уверен, что это вам поможет, но вы можете взглянуть на этот пост в блоге:

http://haishibai.blogspot.com/2010/01/tiy-try-out-windows-7-uac-using-c-part_26.html


  Сведения об ответе

pumpa

07:18, 22nd August, 2020

Вы можете уведомить пользователя, что путь защищен, и попросить его вывести файл в область "safer". Таким образом, ваше приложение не будет нуждаться в повышении. Я уверен, что это зависит от ваших пользователей и того, что вы пытаетесь сделать, однако я не думаю, что это слишком много, чтобы любезно сообщить пользователю, что вы не чувствуете себя хорошо, сбрасывая xyz в папку Windows/System32.


  Сведения об ответе

DAAA

09:32, 21st August, 2020

UAC может поднять объект на основе их GUID, это будет (в теории) означать, что любой класс с GUID может быть повышен, UACDemo также должен показать, как это сделать


  Сведения об ответе

ЯЯ__4

20:28, 9th August, 2020

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

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

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

Примечание: это действительно воняет, что нет никакого .net способа попросить разрешения, возможно, p / invoke win32 api...?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться