Повышение прав без запроса пароля админа, для конкретного приложение. Повышаем пользовательские привилегии в Windows Поведение запроса на повышение прав для администраторов в режиме одобрения администратором

Для среднестатистического пользователя механизм UAC – это надоедливые окошки, которые требуют подтверждения чуть ли не каждого действия. По привычке все «майкрософтовские» нововведения оцениваются весьма скептически, и пользователь ищет, как бы их полностью отключить. Но, возможно, стоит иногда терпеть небольшие неудобства ради безопасности? В этом материале мы расскажем, зачем все-таки нужен UAC и как его настроить. UAC – механизм контроля учетных записей Управляя учетными записями, механизм UAC действительно эффективно защищает операционную систему. Все попытки отключить такие механизмы, как UAC, получить для своей учетной записи на компьютере статус администратора, предпринимаются только для одного – полного контроля и обладания полными правами на своем собственном компьютере, не смотря на то, насколько опытен юзер. Но этим весьма активно пользуются те, кто создает вредоносное программное обеспечение, которое, проникнув на ваш компьютер, может пользоваться администраторскими правами – так же, как и вы. Опасное содержимое атакует системный реестр, файловую систему и службы Windows. Именно поэтому, даже если вы пользуетесь администраторской учетной записью, обеспечив себе полные права, UAC все равно будет активно «мешать» пользователю в его попутках отварить все двери вирусам. Если, конечно, он включен… В этом случае UAC будет блокировать все обращения к файлам, которые имеют статус системных, а также в реестру и службам. В каждом из этих случаев появится характерное окно, описывающее, что и куда обращается и требующее вашего подтверждения. Например, такое (при установке программы): Параметры UAC Настройка UAC довольно проста и наглядна. Для этого создали уровни защиты, всего их – 4. Чтобы открыть окно настройки этого механизма и убедиться в его простоте, откройте «Пуск» и в поиске введите, например, такой запрос:
Нажмите на «Изменение параметров контроля учетных записей» и откроется окно нехитрой настройки механизма UAC.
Предлагается 4 уровня защиты – от самого высокого до полного отключения этого механизма. Каждый уровень подробно описан в области справа от шкалы. Более глубокая настройка механизма UAC доступна в Политиках Безопасности. Чтобы открыть эту службу, можно воспользоваться разными способами:

  • Кнопка «Пуск» - ввести в окошке поиска запрос «Локальная политика безопасности». Найти нужный результат среди предложенных;
  • Горячие клавиши «Win+ R » - откроется окошко «Выполнить». К нем введите или скопируйте команду secpol.msc , подтвердите нажатием Ok.


  1. Самый первый параметр влияет на все политики, определяя их характеристики на данном компьютере. Если включить этот параметр, то для всех пользователей, состоящих в группе «Администраторы», будет появляться диалог, запрашивающий повышенные полномочия (когда срабатывает UAC). Если отключить , то ограничения снимаются.
  2. Этот параметр включен по умолчанию для рабочих групп. Если он включен , то у всех запускаемых программ проверяется цифровая подпись, выдаваемая Microsoft. Если подпись отсутствует, приложение не установится, а потребует повышение прав у пользователя рабочей группы. Тогда необходимо ввести имя и пароль администраторской учетки.
  3. При включении данного параметра, все запросы UAC выводятся на безопасный рабочий стол, при отключении – на интерактивный.
  4. Данный параметр для пользователей группы «Администраторы» задает вид запроса, появляющегося, когда требуется повышение прав.
    • Повышение без запроса. Ввод учетных данных и подтверждение согласия не запрашиваются. Если выбрать этот параметр, права становятся равными встроенной администраторской учетной записи.
    • Запрос учетных данных на безопасном рабочем столе. Если выводится запрос на повышение прав на безопасном рабочем столе, будет требоваться ввести логин и пароль пользователя с привилегиями для продолжения операции с самыми высокими правами пользователя.
    • Запрос согласия на безопасном рабочем столе. Пароль вводить не требуется, вместо этого предлагается разрешить или запретить повышение прав.
    • Запрос учетных данных. Ввод пароля для любых операций, требующих повышения прав.
    • Запрос согласия. Запрос разрешения на повышение прав для любых операций, требующих этого.
    • Запрос согласия для сторонних двоичных файлов. Для сторонних приложений (не Windows), требующих повышения прав, на безопасный рабочий стол будет выведен запрос на разрешение или запрет. В случае разрешения, операция продолжится с максимальными правами.
  5. Определяет то, какие действия предпримет система при обращении пользователя, обладающего обычными правами, к приложениям, требующим повышения прав.
    • Запрос учетных данных на безопасном рабочем столе (установлено по умолчанию). Пользователю необходимо будет ввести учетные данные администратора (имя и пароль), при этом операция (если данные введены верно) будет проходить на безопасном рабочем столе.
    • Запрос учетных данных. Пользователю необходимо будет ввести учетные данные администратора (имя и пароль). Если данные введены верно, операция будет продолжена.
    • Автоматически запретить запросы на повышение прав. Выводит сообщение о запрете на повышение полномочий.
  6. При включенном параметре, данные приложения будут запускаться, только если находятся в безопасных папках, при выключенном – в любом случае.
  7. Параметр, который по умолчанию отключен, помогает определить, нужна ли проверка подписей для интерактивных приложений PKI (открытый ключ). Включать имеет смысл только в организациях, где данный контроль уместен.
  8. Для устаревших приложений, пытающихся обращаться к защищенным областям системы. Если отключить , то эти приложения вовсе не будут исполняться, заканчиваясь ошибкой. Если включить (по умолчанию), то во время исполнения будут созданы перенаправления для сбоев определенные места в системе и реестре.
  9. Параметр для обычных пользователей, который по умолчанию отключен.
  10. Параметр, который также отключен по умолчанию. В этом случае, при использовании встроенной администраторской учетной записи, все приложения выполняются с максимальными правами. Если его включить , то для встроенной учетной записи все операции, требующие повышения прав, будут запрашивать подтверждение.
Какой уровень защиты использовать? Это зависит исключительно от ваших личных предпочтений. Действительно, придется терпеть некоторые неудобства, которые связаны только с появлением надоедливого окошка подтверждения действия, связанного с использованием системных ресурсов. Таким образом, можно создать учетную запись с ограниченными правами и пользоваться ей. При этом создать сложный пароль для администраторской учетной записи, не храня его на компьютере. При установке каких-либо приложений, требующих повышение прав – просто вводить имя и пароль администраторской учетной записи. Только так можно быть уверенным в защите системы от вредоносного ПО. Точно так же можно защитить паролем с доступом Администратора и конкретные файлы. Для этого нужно просто урезать права к этим файлам для пользовательской учетной записи. Если вы не считаете себя опытным пользователем Windows 7, при этом активно пользуетесь интернетом, часто обмениваетесь информацией, подключая к своему компьютеру сменные носители, наш совет: не отключайте UAC и уделите время для его вдумчивой настройки. Этот механизм способен успешно бороться со многими угрозами, не зависимо от антивирусного ПО.

Elcomsoft System Recovery Professional v 3.0.0.466 Retail ML RUS - Специально подготовленный iso образ для восстановления паролей к любой учётной записи в любой винде.

Львиная доля всех обращений в службы технической поддержки связаны с утерянными или забытыми паролями на вход в систему. Данная программа поможет, восстановите или замените пароль легко и быстро! Без необходимости переформатировать диск или переустанавливать Windows. Загрузите компьютер с готового к использованию диска, и разблокируйте вашу систему в несколько минут! Elcomsoft System Recovery позволяет мгновенно сбросить пароли к учётным записям, позволяя так же путем ряда атак, в ряде случаев за короткое время найти оригинальные пароли.

Elcomsoft System Recovery разблокирует учётные записи Администратора и других пользователей в системах Windows 2000, Windows 7 (32-битная и 64-битная версии), Windows 98, Windows Server 2003/2008, Windows Vista (32-битная и 64-битная версии), Windows XP.

Возможности Elcomsoft System Recovery:

Готов к загрузке – базируется на системе Windows (Preinstallation Environment), лицензированной у Microsoft.
-Восстановление или сброс паролей к учётным записям как Администратора, так и всех других пользователей.
-Восстановление оригинальных паролей (в некоторых случаях), обеспечивающее доступ к данным, зашифрованным с использованием EFS.
-Разблокирование учётных записей (имеющих статус locked или disabled).
-Поднятие привилегий (до уровня администратора) для любой учётной записи.
-Доступ к учётным записям, у которых истёк срок действия пароля.
-Поддержка широкого спектра аппаратного обеспечения; нативная поддержка файловых систем FAT, FAT32 и NTFS.
-Привычный графический интерфейс Windows – легко и удобно использовать.
-Поддержка всего спектра операционных систем: Windows 2000, Windows 7 (32-битная и 64-битная версии), Windows 98, Windows Server 2003/2008, Windows Vista (32-битная и 64-битная версии), Windows XP.
-Поддержка американской, русской и других локализованных версий Windows; работа с именами пользователей и паролями на всех языках.
-Автоматическое определение всех установленных копий Windows.
-Возможность выгрузки хэшей паролей (для дальнейшего анализа и восстановления) как из локального реестра, так и из Active Directory.

Готов к загрузке:

Elcomsoft System Recovery поставляется в виде загрузочного диска, который можно использовать немедленно; при необходимости можно создать загрузочный USB-диск. Нет необходимости записывать диск самостоятельно; доступ к дистрибутиву Windows тоже не нужен.
Компания «Элкомсофт» лицензировала систему Windows Preinstallation Environment (Windows PE) у Microsoft.

Легко использовать:

Система Windows PE предоставляет удобный и привычный интерфейс Windows. Никаких скриптов, никакой командной строки, никаких сложных настроек!
Просто загрузите компьютер с CD или флеш-диска Elcomsoft System Recovery и решите все проблемы, связанные с доступом в систему.

Широкая совместимость:

Elcomsoft System Recovery поддерживает широчайший спектр аппаратного обеспечения, включая контроллеры SATA, SCSI и RAID от большинства производителей: Adaptec, Intel, LSI, NVIDIA, Promise, SiS и VIA. Даже в том случае, если используется какой-то экзотический контроллер, вы можете подгрузить необходимый драйвер (обычно поставляется вместе с оборудованием) с дискеты, CD или флеш-диска.

В отличие от других продуктов, использующих собственный код надёжность и совместимость которого не гарантируется, Elcomsoft System Recovery включает нативную (от Microsoft) поддержку всех файловых систем Microsoft: FAT, FAT32 и NTFS.

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

Введение

Повышение привилегий в Windows и Linux несколько различается. Несмотря на то что обе операционные системы несут обычное число уязвимостей, исследователи отмечают, что полностью пропатченный Windows-сервер встречается гораздо чаще, чем обновленный до актуального состояния Linux. К тому же время выхода виндовых патчей зачастую меньше, что делает повышение привилегий на винде задачей достаточно интересной и амбициозной. Именно ей мы и посвятим наш рассказ.

Варианты

Итак, какие у нас есть возможности приподняться в мире Windows? Прежде всего, в последнее время в ядре ОС было найдено достаточно уязвимостей, связанных с парсингом шрифтов, что делает процесс повышения привилегий достаточно простым, если на руках есть подходящий сплоит. Если ты используешь Metasploit, то достаточно всего лишь одной команды, чтобы получить системный шелл. Однако все это с большой вероятностью успешно сработает только в том случае, если система не полностью пропатчена. Если же на машине установлены все обновления, то, в отличие от Linux, здесь не получится найти SUID-бинарников, а переменные окружения обычно не передаются сервисам или процессам с более высокими привилегиями. Что же в результате нам остается?

От админа до системы, или то, что знают все

Обычно при упоминании повышения привилегий на ум сразу приходит способ, использующий планировщик задач. В винде можно добавить задачу с помощью двух утилит: at и schtasks . Вторая запустит задачу от имени пользователя, добавившего задание, в то время как первая - от имени системы. Стандартный трюк, о котором ты наверняка слышал, позволяющий запустить консоль с правами системы:

At 13:01 /interactive cmd

Второе, что приходит в голову, - это добавление сервиса, который будет запускать необходимый файл / выполнять команду:

@echo off @break off title root Cls echo Creating service. sc create evil binpath= "cmd.exe /K start" type= own type= interact > nul 2>&1 echo Starting service. sc start evil > nul 2>&1 echo Standing by... ping 127.0.0.1 -n 4 > nul 2>&1 echo Removing service. echo. sc delete evil > nul 2>&1

Третий способ заключается в подмене системной утилиты C:\windows\system32\sethc.exe на, например, cmd . Если после этого разлогиниться и нажать несколько раз клавишу Shift , то появится консоль с системными правами.

Что касается автоматизированных способов, то на ум сразу же приходит Metasploit и его getsystem . Альтернативным вариантом можно считать PsExec от Sysinternals (psexec -i -s -d cmd.exe).

Мы пойдем другим путем

У всех названных методов есть общий недостаток: необходимы администраторские привилегии. Это означает, что мы повышаем привилегии уже из-под привилегированного аккаунта. В большинстве случаев, когда ты получил админские права, у тебя на руках появляется куча вариантов, как подняться еще выше. Так что это не очень сложная задача. Мы же поговорим сегодня о методах повышения привилегий, не использующих какие-либо 0day-уязвимости, полагая, что у нас обычная система и на руках аккаунт обычного непривилегированного пользователя.

Охота за credentials

Один из надежных и стабильных способов повышения привилегий и закрепления в системе - получить пароли администраторов или пользователей, обладающих более высокими привилегиями. И тут самое время вспомнить об автоматизированной установке программного обеспечения. Если ты управляешь доменом, включающим в себя обширный парк машин, однозначно тебе не захочется ходить и устанавливать ПО на каждую из них вручную. Да и времени это будет отнимать столько, что ни на какие другие задачи не хватит. Поэтому используются Unattended installations, которые порождают файлы, содержащие админские пароли в чистейшем виде. Что представляет собой просто клад как для пентестеров, так и для злоумышленников.

Unattended Installs

В случае автоматизированной установки на клиенте остается достаточно любопытный для нас файл Unattended.xml , который обычно находится либо в %WINDIR%\Panther\Unattend\ , либо в %WINDIR%\Panther\ и может хранить пароль администратора в открытом виде. С другой стороны, чтобы получить этот файл с сервера, не требуется даже никакой аутентификации. Надо найти лишь «Windows Deployment Services» сервер. Для этого можно воспользоваться скриптом auxiliary/scanner/dcerpc/windows_deployment _services из Metasploit. И хотя Windows Deployment Services не единственный способ выполнения автоматизированных инсталляций, файл Unattended.xml считается стандартом, так что его обнаружение можно приравнять к успеху.

GPP

XML-файлы настроек групповой политики безопасности (Group Policy Preference) довольно часто содержат в себе набор зашифрованных учетных данных, которые могут использоваться для добавления новых пользователей, создания шар и так далее. На счастье, метод шифрования документирован, таким образом, можно запросто получить пароли в чистом виде. Более того, команда Metasploit уже все сделала за тебя - достаточно воспользоваться модулем /post/windows/gather/credentials/gpp.rb . Если тебе интересны подробности, то вся необходимая информация доступна по этой ссылке .

Пользовательские права

Очень часто повышение привилегий оказывается следствием неправильно настроенных пользовательских прав. Например, когда пользователь домена является локальным администратором (или Power User’ом) на хосте. Или когда пользователи домена (или члены доменных групп) являются локальными админами на всех хостах. В таком случае тебе уже толком не придется ничего делать. Но такие варианты подворачиваются не так часто.

AlwaysInstallElevated

Иногда администраторы позволяют обычным пользователям самостоятельно устанавливать программы, обычно делается это через следующие ключи реестра:

HKLM\SOFTWARE\Policies\Microsoft\Windows \Installer\AlwaysInstallElevated

HKCU\SOFTWARE\Policies\Microsoft\Window s\Installer\AlwaysInstallElevated

Они указывают системе, что любой MSI-файл должен устанавливаться с повышенными привилегиями (NT AUTHORITY\SYSTEM). Соответственно, задействовав специальным образом созданный файл, можно опять же выполнить действия от имени системы и прокачать свои привилегии.

В состав Metasploit входит специальный модуль exploit/windows/local/always_install_elevated , который создает MSI-файл со встроенным в него специальным исполняемым файлом, который извлекается и выполняется установщиком с привилегиями системы. После его выполнения MSI-файл прекращает установку (путем вызова специально созданного невалидного VBS), чтобы предотвратить регистрацию действия в системе. К тому же если запустить установку с ключом /quiet , то юзеру даже не выведется ошибка.

Пропавший автозапуск

Очень часто случается, что система хранит запись о файле, который надо автоматически запустить, даже после того, как сам файл уже канул в Лету. Может, какой-то сервис был некорректно удален - исполняемого файла нет, а запись в реестре осталась, и при каждом запуске система безуспешно пытается его стартануть, забивая журнал событий сообщениями о фейлах. Этой ситуацией также можно воспользоваться для расширения своих полномочий. Первым делом надо найти все такие осиротевшие записи. Например, при помощи утилиты autorunsc от Sysinternals.

Autorunsc.exe -a | findstr /n /R "File\ not\ found"

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

Магия кавычек

Да-да, кавычки могут не только сыграть злую шутку в SQL-запросах, позволив провести инъекцию, но и помочь поднять привилегии. Проблема довольно старая и известна со времен NT. Суть в том, что пути до исполняемых файлов некоторых сервисов оказываются не обрамленными кавычками (например, ImagePath=C:\Program Files\Common Files\Network Associates\McShield\McShield.exe), при этом в пути присутствуют символы пробела. В таком случае, если атакующий создаст файл, который будет добавлять новых админов в систему или выполнять еще какие-то действия, и назовет его C:\Program Files\common.exe , то при последующем запуске сервиса запустится именно common.exe , а оставшаяся часть пути будет воспринята в качестве аргумента (аргументов). Понятно, что в Program Files непривилегированный пользователь положить ничего не сможет, но исполняемый файл сервиса может находиться и в другой директории, то есть у юзера будет возможность подсунуть свой файл.

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

Wmic service get name,displayname,pathname, startmode |findstr /i "auto" |findstr /i /v "c: \windows\\" |findstr /i /v """

Правда, на XP это потребует привилегий админа, поэтому там лучше воспользоваться следующим методом: получить список сервисов - sc query , далее смотреть информацию по каждому сервису - sc qc servicename .

Все по плану

Еще один механизм, который может помочь поднять права и про который обычно забывают, - планировщик задач. Утилита schtasks позволяет вешать задачи на определенные события. Наиболее интересные для нас - ONIDLE, ONLOGON и ONSTART. Как следует из названий, ONIDLE будет выполняться каждый раз при простое компьютера, ONLOGON и ONSTART - при входе пользователя и при запуске системы соответственно. Таким образом, на каждое из событий можно повесить отдельную задачу. Например, при запуске системы копировать куда-либо вредоносный бинарник/кейлоггер/… и запускать его. При входе пользователей в систему - запускать дампер кредитных карт. Короче, все ограничивается только твоей фантазией и поставленной задачей.

Фокусы с разрешениями

Разрешения на доступ к файлам - это обычно первое защитное средство, которое мешает поднять нам свои привилегии. Было бы заманчиво просто так переписать какой-либо системный файл (например, тот же самый sethc.exe, упомянутый в самом начале статьи) и получить сразу системные привилегии. Но все это лишь мечты, на деле у нас есть лишь разрешение на его чтение, которое нам ровным счетом ничего не дает. Однако не стоит вешать нос, ибо с разрешениями тоже не все так гладко - здесь, как и везде, существуют свои подводные камни, знание которых позволяет делать невозможное возможным.

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

Еще одно из ограничений - обычному смертному не позволяется писать в корень системного диска. Однако, например, на XP при создании новой директории в корне диска группа BUILTIN\Users получает FILE_APPEND_DATA и FILE_WRITE_DATA разрешения (даже если владельцем папки является администратор):

BUILTIN\Users:(OI)(CI)R BUILTIN\Users:(CI)(special access:) FILE_APPEND_DATA BUILTIN\Users:(CI)(special access:) FILE_WRITE_DATA

На «семерке» происходит почти то же самое, только разрешения получает группа AUTHENTICATED USERS. Каким образом такое поведение может превратиться в проблему? Просто некоторые приложения устанавливают себя вне защищенных директорий, что позволит легко подменить их исполняемые файлы. Например, такая оказия случилась с Metasploit Framework в случае ее многопользовательской установки. Данный баг был пофиксен в версии 3.5.2, а утилита переехала в Program Files.


Как искать такие директории/файлы

Обнаружение директории с некорректными разрешениями - это уже половина успеха. Однако ее нужно сначала найти. Для этого можно воспользоваться следующими двумя инструментами: AccessChk и Cacls/ICacls. Чтобы найти при помощи AccessChk «слабые» директории, понадобятся данные команды:

Accesschk.exe -uwdqs users c:\ accesschk.exe -uwdqs “Authenticated Users” c:\

Для поиска файлов со «слабыми» разрешениями служат следующие:

Accesschk.exe -uwqs users c:\*.* accesschk.exe -uwqs “Authenticated Users” c:\*.*

То же самое можно выполнить и при помощи Cacls/ICacls:

Cacls "c:\Program Files" /T | findstr Users

Трюки с сервисами

Еще один вариант, как подняться в системе повыше, - это воспользоваться мисконфигурациями и ошибками сервисов. Как показывает практика, некорректными разрешениями могут обладать не только файлы и папки, но также и сервисы, работающие в системе. Чтобы обнаружить такие, можно воспользоваться утилитой AccessChk от небезызвестного тебе Марка Руссиновича:

Accesschk.exe –uwcqv *

Отраднее всего будет увидеть SERVICE_ALL_ACCESS разрешение для аутентифицированных пользователей или power-юзеров. Но также большой удачей можно считать и следующие:

  • SERVICE_CHANGE_CONFIG - можем изменять исполняемый файл службы;
  • WRITE_DAC - можно менять разрешения, что приводит к получению разрешения SERVICE_CHANGE_CONFIG ;
  • WRITE_OWNER - можно стать владельцем и изменить разрешения;
  • GENERIC_WRITE - наследует разрешения SERVICE_CHANGE_CONFIG ;
  • GENERIC_ALL - наследует разрешения SERVICE_CHANGE_CONFIG .

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

Как повысить?

Допустим, ты нашел подходящий сервис, настало время поработать над ним. В этом поможет консольная утилита sc. Для начала получаем полную информацию об интересующем нас сервисе, допустим, это upnphost:

Sc qc upnphost

С помощью этой же утилиты отконфигурируем его:

Sc config vulnsrv binpath= "net user john hello /add && net localgroup Administrators john /add" type= interact sc config upnphost obj= “.\LocalSystem” password=“”

Как видишь, при следующем старте службы вместо ее исполняемого файла выполнится команда net user john hello /add && net localgroup Administrators john /add , добавив в систему нового пользователя john с паролем hello . Остается только вручную перезапустить сервис:

Net stop upnphost net start upnphost

Вот и вся магия.

Что в итоге

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

UAC (User Account Control) — технология контроля учетных записей, появившаяся впервые в Windows Vista и старше. Данная технология запрещает программам выполнять действия, требующие права администратора. При выполнении программой таких действий, ее работа приостанавливается и пользователю выдается окно с запросом на защищенном рабочем столе (для того, чтобы невозможно было нажать программно кнопку ОК). К примеру, если вашей программе потребуется внести изменения в раздел реестра HKEY_LOCAL_MACHINE , то ей потребуются права администратора.
Для решения данной проблемы можно воспользоваться внедрением в проект файла манифеста, который операционная система будет считывать и автоматически определять необходимые для запуска параметры.
Рассмотрим внедрение файла манифеста, в приложение «Windows Form ». Для этого откройте Visual Studio(в данном примере используется версия 2012) и создайте проект «Windows Form ». Откройте «Solution Explorer » (Обозреватель решений), который обеспечивает упорядоченное представление проектов и их файлов, перейдите в меню «Вид » - «Обозреватель решений ». Выполните клик правой клавишей мыши в «Обозревателе решений » по имени проекта и выберите из контекстного меню, пункт «Добавить » - «Создать элемент… ».

У вас откроется новое окно «Добавление нового элемента - … » найдите элемент Visual С# с именем «Файл манифеста приложения », выберете его и нажмите кнопку «Добавить ».

В «Обозревателе решений » у вас появится новый пункт с именем файла манифеста. Так же он будет автоматически открыт в редакторе кода.

Для настройки прав необходимых для выполнения приложения требуется определить уровень безопасности и описать элемент «requestedExecutionLevel ». Этот элемент не имеет дочерних элементов и имеет следующие атрибуты:
1) Level - Обязательный. Устанавливает уровень безопасности, требуемый приложению. Для данного атрибута доступны следующие значения:
  • asInvoker - приложение запускается с правами процесса-родителя. Это означает, что если выполняется запуск программы из приложения, которое уже запущено с правами администратора, то она автоматически будет иметь те же права. Этот режим рекомендуется Microsoft в большинстве случаев. Т.е. это те программы, которые не требуют прав администратора;
  • highestAvailable — приложение запускается с более высокими правами, чем имеет текущий пользователь. С такими правами запускаются Regedit.exe, Mmc.exe;
  • requireAdministrator — запрашиваются полные права администратора. Т.е. требуются для приложений, которые не могут работать без прав администратора.

Установка приложений «ClickOnce » возможна только при значении «asInvoker». При любом другом значении установка будет невозможна.

2) uiAccess - Необязательный. Указание того, требует ли приложение доступ к защищенным элементам пользовательского интерфейса для реализации специальных возможностей. Доступны значения "true " и "false ", по умолчанию используется значение "false ". Значение "true " должны иметь только подписанные приложения и запускалась из папок "\Program Files\" и "\windows\system32\". Чаще всего, в этом нет необходимости.
Для того чтобы программа при запуске требовала повышение прав до уровня Администратора, заменим в атрибуте «Level » значение по умолчанию «asInvoker » на «requireAdministrator ».

Выполните построение решения, нажав на клавишу «F6 ». Если вы все сделали правильно, то в операционных системах Windows Vista и старше, на иконке исполняемого файла программы появится значок щита, означающий, что данной программе требуется повышение прав.

Для проверки прав вашего приложения вы можете воспользоваться приведенным ниже листингом.
string s = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator) ? "Администратор" : "Обычный пользователь"; Если у вас консольное приложение, то для него принцип действий такой же.


error: Контент защищен !!