Будет ли Windows 7 отображать сообщение, когда приложению требуются права администратора? - PullRequest
5 голосов
/ 04 апреля 2011

Что произойдет, когда я напишу приложение, которое должно сделать что-то «управляемое»?

Как запись файлов в C:\Program Files - тогда, когда приложение попытается это сделать, что произойдет?Будет ли появляться сообщение с просьбой ввести пароль?Будет ли выброшено исключение?Будет ли программа завершена и компьютер взорвется?Все вышеперечисленное?:)

Примечание: пользователи Windows 7 по умолчанию зарегистрированы как администраторы?

1 Ответ

7 голосов
/ 04 апреля 2011

В целом, Windows Vista и Windows 7 не будут автоматически определять, что вам нужны права администратора, и не будут автоматически повышать уровень вашего приложения. У Microsoft есть несколько рекомендаций для правильного запроса повышения прав.Старые приложения без манифеста также могут оказаться виртуализированными, то есть ваша запись в программные файлы может быть перенаправлена ​​в каталог в каталоге профиля пользователя.

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

Обратите внимание, что пользователи с правами администратора в Windows 7 / Vista не могут использовать свои права без повышения прав - токен администратора имеет более высокий уровень целостности , чемпроцессы запускаются по умолчанию и поэтому недоступны.Если вы попытаетесь выполнить операцию, требующую такого доступа, вы получите ошибку отказа в доступе;нижележащие API не будут выдавать никаких исключений, обычно они просто терпят неудачу и устанавливают GetLastError() в ERROR_ACCESS_DENIED.API более высокого уровня, конечно, могут преобразовать это в выбрасываемое исключение или принудительно прекратить, хотя последнее довольно грубо и вряд ли произойдет в любых встроенных интерфейсах Windows.

...