Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 4

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

Ответ 5

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

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

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

Примечание: он воняет, нет способа .net просить разрешения, возможно, p/вызвать win32 api...?

Ответ 6

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