Как забрать права администратора у приложения

Обновлено: 23.04.2024


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

Выдавать пользователю права администратора, чтобы решить проблему быстро и просто, противоречит нормам инфобезопасности. Можно, конечно, дать ему отдельный компьютер и поместить в изолированную сеть, но — это дорого и вообще…

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

Программа может запрашивать права администратора условно в двух случаях:

  1. Когда хочет получить доступ туда, куда «простым смертным» нельзя: например, создавать файлы в системных каталогах.
  2. Когда программу скомпилировали со специальным флагом «Требовать права администратора».

С первым случаем все понятно: берем в руки замечательную программу Марка Руссиновича Process Monitor, смотрим, что происходит, и куда программа пытается залезть:


Куда это лезет этот 7Zip?

И по результатам исследования выдаем права пользователю на нужный каталог или ветку реестра.

Сложнее, если случай клинический, и так просто выдать права не получится: например, программа требует сильного вмешательства в работу системы вроде установки драйверов. Тогда придется придумывать всякий колхоз, про который речь пойдет в последнем разделе статьи. Пока подробнее освещу второй случай — когда стоит флажок.

Если сильно упростить, то в специальном манифесте программы (к слову, установщики — это тоже программы) могут быть три варианта запуска:

  • asInvoker. Программа запускается с теми же правами, что и породивший ее процесс (как правило, это explorer.exe c правами пользователя);
  • highestAvailable. Программа попросит максимально доступные пользователю права (у администратора появится окно с запросом повышения UAC, у пользователя — нет);
  • requireAdministrator. Программа будет требовать права администратора в любом случае.

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

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

Простейшим вариантом работы с этим механизмом будет использование переменных среды.

Рассмотрим пример с редактором реестра. Действительно, запуская regedit.exe под администратором, мы получаем запрос на повышение прав:


Запрос повышение прав.

Если же мы запустим редактор реестра из консоли, предварительно поменяв значение переменной среды __COMPAT_LAYER на:

То запроса UAC не будет, как и административных прав у приложения:


Бесправный редактор реестра.

Этим можно пользоваться, запуская программы батниками или добавляя контекстное меню через реестр. Подробнее читайте в материале How to Run Program without Admin Privileges and to Bypass UAC Prompt?

Поскольку ярлычками тут обойтись не выйдет, ведь 1С сама скачивает файл и запускает его, то придется применять тяжелую артиллерию — Microsoft Application Compatibility Toolkit.

Документация к ПО, как обычно, доступна на официальном сайте, загрузить можно как часть Windows Assessment and Deployment Kit. Сам процесс решения проблемы несложен.

Необходимо поставить утилиту, запустить Compatibility Administrator и создать Application Fix в новой или имеющейся базе данных:


Создаем исправление приложения.

Имя и издатель значения не имеют. Имеет значение только расположение файла — тут нужно указать реальный проблемный bnk.exe (где он будет лежать на самом деле — не важно).

Далее необходимо в списке исправлений выбрать RunAsInvoker.


Выбираем нужный фикс.

Все остальное оставляем по умолчанию, сохраняем базу данных. Должно получиться примерно так:


Созданный фикс для bnk.exe.

После этого достаточно будет установить базу данных, щелкнув по ней правой кнопкой и выбрав Install. Теперь пользователи смогут сами грузить классификаторы банков.

Все становится хуже, если приложению действительно нужны права админа. Тогда добавление прав на системные объекты и исправления не помогают.

Казалось бы, самым очевидным решением для запуска нашего странного ПО выглядит использование встроенной утилиты Runas. Документация доступна на сайте Microsoft.

Ну, посмотрим, что из этого выйдет.

Действительно, RunAs запустит 7zip с правами учетной записи «Администратор», спросит пароль и запомнит его. Потом ярлык с такой строкой запуска будет запускать 7zip под Администратором без вопросов.


)

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

Зато runas может быть полезен, когда сотрудник знает пароль администратора, но работает под ограниченной учетной записью (по идее так должен делать каждый системный администратор).

Если мы начали с консольных команд, то перейдем к более высокоуровневым скриптам. Интересное решение было предложено в статье «Планктонная Windows», где упомянутый выше Runas обвязывался js-скриптом и пропускался через обфускатор. У решения есть и очевидный минус — скрипт можно раскодировать.

Чуть более интересным методом в 2к20 являются возможности PowerShell и его работа с паролями. Подробнее можно почитать в материале «Защита и шифрование паролей в скриптах PowerShell».

Если вкратце: в PS работа с паролями производится через специальный тип данных SecureString и объект PSCredential. Например, можно ввести пароль интерактивно:

Затем сохранить пароль в зашифрованном виде в файл:

И теперь использовать этот файл для неинтерактивной работы:

К сожалению, файл этот можно использовать только на том ПК, на котором его создали. Чтобы этого избежать, можно сделать отдельный ключ шифрования. Например так:

Теперь при помощи этого ключа пароль можно зашифровать:

К сожалению, с безопасностью дела обстоят так же печально: утащить пароль не составляет трудностей, если есть доступ к файлу с ключом шифрования и зашифрованным паролем. Да, можно добавить обфускации и скомпилировать скрипт в .exe вместе с нужными файлами. Но нужно понимать, что это — полумеры.

В свое время я использовал для решения подобных задач свой любимый AutoIt, где компилировал скрипт с командой RunAs и радовался… До тех пор, пока не узнал, что AutoIt (особенно старых версий) декомпилируется на раз-два.

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

На свете существует несколько сторонних решений, призванных решить задачу. Остановлюсь на парочке из них.

Пожалуй, одна из самых известных утилит — это AdmiLink, разработанная Алексеем Курякиным для нужд ядерной физики. Программа и принципы ее работы описаны на официальном сайте. Я, как обычно, позволю себе более краткое описание.

Программа состоит из трех модулей. AdmiLink — это графическое окно, где можно создать ярлык на нужное приложение (в принципе, в ряде случаев достаточно только его).


Основное окно программы.

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

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

На первый взгляд все выглядит безопасно, но, к сожалению, код программ закрыт, и насколько можно доверять разработчику — вопрос.

Третий модуль — AdmiLaunch — отвечает за запуск окон в разных режимах, и он используется для запуска AdmiRun, если создавать ярлык через AdmiLink.

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

RunAsRob — довольно интересное ПО за авторством немецкого разработчика Оливера Хессинга (Oliver Hessing). В отличие от AdmiLink, ПО устанавливается как служба, запускаемая под привилегированной учетной записью (администратора или системы). Как следствие, подготовленный ярлык обращается к службе, которая уже в свою очередь запускает заданное ПО.

Особенность программы в том, что есть возможность авторизовать не только программы, но и папки (включая сетевые). А хранение настроек в реестре позволило добавить шаблоны групповых политик, примерно как мы писали в статье «Погружение в шаблоны и приручение GPO Windows». Благодаря этому при необходимости настройки можно применять прямо из Active Directory.


Основное окно программы.

Программа богато документирована на официальном сайте.

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

Мне остается только добавить, что это ПО бесплатно только для личного использования.

Но учтите, что из программы, запущенной под административными правами, можно натворить бед. Например, запустить привилегированную командную консоль через диалог Файл — Открыть.


Запускаем cmd.exe прямо из редактора реестра.

Немного защититься помогут политики запрета контекстного меню и прочих диспетчеров задач, часть из которых может настроить AdmiLink. Но в любом случае следует быть осторожным.

А вам приходилось городить странные костыли? Предлагаю делиться историями в комментариях.

Титульное изображение статьи

О том, как включить и отключить администратора

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

Первым делом необходимо открыть окно «Выполнить». Делается это нажатием комбинации клавиш Win+R. Далее, в соответствующем поле для поиска введите control userpasswords2 и нажмите кнопку «ОК».

Ввод команды в диалоге Выполнить

Пишем control userpasswords2 (именно с цифрой 2 на конце)

После этого появится новое окно «Учётные записи пользователей». Перейдите к вкладке «Дополнительно» и нажмите одноимённую кнопку в разделе «Дополнительное управление пользователями». Вы попадёте в окно утилиты, которая называется «Управление локальными пользователями и группами». Перейдите к папке «Пользователи», расположенной слева.

Настройка учетных записей

Производя все указанные действия, будьте внимательны

Дважды щёлкните по учётной записи «Администратор», чтобы открыть её свойства. Находясь на вкладке «Общие», снимите птичку с пункта «Отключить учётную запись», а затем подтвердите внесённые изменения. Готово. Остаётся только перезагрузить компьютер, чтобы новые параметры вступили в силу.

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

Если необходимо убрать права администратора, откройте то же самое окно и установите галочку напротив пункта «Отключить учётную запись». Если вы используете Windows 8, то проще и удобнее всего это можно сделать через командную строку. Воспользуйтесь комбинацией клавиш Win+R и пропишите в поле для поиска «cmd». Далее, введите в командной строке команду:

Net user Администратор /Active:no

Отключение в командной строке

Команда Net user Администратор /Active:yes (либо /Active:no)

Вирусная угроза обнаружена

Получение прав админа не гарантирует безопасность

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

Теперь вы знаете, что делать, если понадобится получить полные права администратора в Windows 8, 10 и более ранних версиях, также вы всегда сможете легко их убрать, если возникнет такая необходимость. Пишите в комментариях помогла ли эта статья разобраться в вопросе и спрашивайте, если что-то осталось непонятным после ознакомления с материалом.

date

18.03.2021

directory

Windows 10, Windows Server 2016

comments

комментариев 50

Многие программы при запуске требуют повышения прав (значок щита у иконки), однако на самом деле для их нормальной работы права администратора не требуется (например, вы можете вручную предоставить необходимые права пользователям на каталог программы в ProgramFiles и ветки реестра, которые используются программой). Соответственно, если на компьютере включен контроль учетных записей, то при запуске такой программы из-под непривилегированного пользователя появится запрос UAC и Windows потребует от пользователя ввести пароль администратора. Чтобы обойти этот механизм многие просто отключают UAC или предоставляют пользователю права администратора на компьютере, добавляя его в группу локальных администраторов. Microsoft не рекомендует использовать такие методы, т.к. это снижает безопасность компьютера.

Зачем обычному приложению могут понадобится права администратора?

Права администратора могут потребоваться программе для модификации некоторых файлов (логи, файлы конфигурации и т.д.) в собственной папке в C:\Program Files (x86)\SomeApp). По умолчанию у пользователей нет прав на редактирование данного каталога, соответственно, для нормальной работы такой программы нужны права администратора. Чтобы решить эту проблему, нужно войти на компьютер под администратором и вручную предоставить пользователю (или встроенной группе Users) права на изменение/запись для этого каталога на уровне файловой системы NTFS.

права на запись пользователю в папку программы в ProgramFiles

Примечание. На самом деле практика хранения изменяющихся данных приложения в собственном каталоге в C:\Program Files неверна. Правильнее хранить данные приложения в профиле пользователя. Но это уже вопрос о лени и некомпетентности разработчиков программ.

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

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

Также можно воспользоваться RunAs с сохранением пароля админа /SAVECRED в диспетчере паролей Windows (Credentials Manager). Это также небезопасно, т.к. пользователь может использовать сохранённый пароль учетной записи администратора для запуска других программ.

Рассмотрим более простой способ принудительного запуска любой программы без прав администратора (и без ввода пароля админа) при включенном UAC (4,3 или 2 уровень ползунка UAC).

Для примера возьмем утилиту редактирования реестра — regedit.exe (она находится в каталоге C:\windows\). Обратите внимание на щит UAC у иконки. Данный значок означает, что для запуска этой программы будет запрошено повышение привилегий через UAC.

иконка щита UAC у exe файла в Windows 10

Если запустить regedit.exe , то перед вами появится окно User Account Contol с запросом пароля пользователя с правами администратора на этом компьютере ( Do you want to allow this app to make changes to your device? ). Если не указать пароль и не подтвердить повышение привилегии, приложение не запустится.

запрос пароля администратора при запуске программы в windows 10

Попробуем обойти запрос UAC для этой программы. Создайте на рабочем столе файл run-as-non-admin.bat со следующим текстом:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Теперь для принудительного запуска приложения без прав администратора и подавлением запроса UAC, просто перетащите нужный exe файл на этот bat файл на рабочем столе.

запуск программы в обход UAC и с подавлением запроса пароля администратора

После этого редактор реестра должен запуститься без появления запроса UAC и без ввода пароля администратора. Откройте диспетчер процессов, добавьте столбец Elevated и убедитесь, что в Windows 10 запустился непривилегированный процесс regedit (запущен с правами пользователя).

regedit с правами пользовтеля (Elevated = No)

Попробуйте отредактировать любой параметр в ветке HKEY_LOCAL_MACHINE. Как вы видите доступ на редактирование реестра в этой ветке запрещен (у данного пользователя нет прав на запись в системные ветки реестра). Но вы можете добавлять и редактировать ключи в собственной ветке реестра пользователя — HKEY_CURRENT_USER.

запуск редактора реестра под пользователем

Аналогичным образом через bat файл можно запускать и конкретное приложение, достаточно указать путь к исполняемому файлу.

run-app-as-non-admin.bat

Set ApplicationPath="C:\Program Files\MyApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

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

добавть в file explorer windows 10 пункт запуска программы без запроса UAC

Можно распространить этот пункт меню на компьютеры в домене через импорт ветки реестра с помощью групповых политики.

После этого для запуска любого приложения без прав админа достаточно выбрать пункт “Run as user without UAC elevation” в контекстном меню проводника Windows File Explorer.

Run as user without UAC elevation

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

RunAsInvoker в переменной окружения __COMPAT_LAYER

Переменная окружения __COMPAT_LAYER позволяет устанавливать различные уровни совместимости для приложений (вкладка Совместимость в свойствах exe файла). С помощью этой переменной можно указать настройки совместимости, с которыми нужно запускать программу. Например, для запуска приложения в режиме совместимости с Windows 7 и разрешением 640×480, установите:

set __COMPAT_LAYER=Win7RTM 640x480

свойства совместимости программы

Из интересных нам опций переменной __COMPAT_LAYER можно выделить следующие параметры:

  • RunAsInvoker — запуск приложения с привилегиями родительского процесса без запроса UAC;
  • RunAsHighest — запуск приложения с максимальными правами, доступными пользователю (запрос UAC появляется если у пользователя есть права администратора);
  • RunAsAdmin — запуск приложение с правами администратора (запрос AUC появляется всегда).

Следующий код включает режим RUNASINVOKER для текущего процесса и запускает указанную программу:

start "" "C:\Program Files\MyApp\testapp.exe"

Включаем режим RunAsInvoker через манифест exe файла программы

Вы можете отредактировать манифест exe файла программы и отключить требование запускать программу в привилегированном режиме.

Для редактирования манифеста программы можно использовать бесплатную утилиту Resource Hacker. Откройте исполняемый файл программы в Resource Hacker.

В дереве слева перейдите в раздел Manifest и откройте манифест программы.

Обратите внимание на строки:

Именно благодаря опции requireAdministrator Windows всегда запускает эту программу с правами администратора.

Измените requireAdministrator на asInvoker и сохраните изменения в exe файле.

resource hacker включитьпараметр asinvoker в manifest exe файла

Обратите внимание, что теперь у иконки программы пропал щит UAC и вы можете запустить ее без запроса прав администратора с привилегиями текущего пользователя.

убрат щит защиты uac у любой программы в windows 10 с помощью манифест файла

Если исполняемый файл программы подписан подписью MS Authenticode (сертификатом Code Signing), то после модификации exe файла он может перестать запускаться или выдавать предупреждение.

В этом случае можно заставить программу использовать внешний файл манифеста. Создайте в каталоге с ехе файлом текстовый файл app.exe.manifest (например Autologon.exe.manifest) и скопируйте в него код манифеста из Resource Hacker. Измените requireAdministrator на asInvoker. Сохраните файл.

Чтобы Windows при запуске приложений всегда пробовала использовать внешний файл манифеста, включите специальный параметр реестра:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide" /v PreferExternalManifest /t REG_DWORD /d 1 /f

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

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

С использованием командной строки

Программисты знают, что если нет алгоритма по устранению какой-то неполадки внутри ОС, то лучшее решение — прибегнуть к консоли.

  • Ввести в поисковое окно Windows 10 последовательность букв «cmd».

скриншот_1

  • Среди всплывших результатов нажать на «Запустить от имени Администратора».

скриншот_2

  • Теперь требуется завести нового пользователя и наделить его возможностью администрирования. При этом следует обязательно отменить влияние старого администратора.
  • При помощи команды «net users» вывести на экран список юзеров.

скриншот_3

  • Вбить нового (например, New_Admin_02) и задать для него индивидуальные параметры: net localgroup Администраторы New_Admin_02 /add и нажать Enter.

скриншот_4

  • Осталось избавиться от предыдущего управленца. Следует закрыть все и зайти в консоль уже от имени нового админа.

скриншот_5

  • В командную строку вписать команду: net localgroup Пользователи имя_пользователя /delete.

скриншот_6

  • Учетка обновлена, и права админа присвоены новому человеку.

С помощью утилиты Локальная политика безопасности

Понадобится прибегнуть к функции окна «Выполнить»:

скриншот_7

  • Выбираем ветку локальной политики, находим там параметры безопасности. Далее откроются два окна, нужно в правом выбрать «Учетные записи: Состояние «Администратор»».

скриншот_8

  • Внизу поставить отметку на пункте «Отключен».
  • Выйти из режима.

скриншот_9

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

  • Зажать клавиши «Win+R», забить в строку compmgmt.msc и нажать «Ввод».

скриншот_10

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

скриншот_11

  • Создать новую строку, подписать «Администраторы», подтвердить.

скриншот_12

  • Открыть тип объекта — группы, нажать «Удалить», «ОК»

скриншот_13

  • Перезагрузить устройство. После этого пользователь, которого включили в раздел Администраторы, будет иметь необходимые права.

Утилита управление компьютером

Чтобы отключить запрос прав администратора на конкретном аккаунте, можно зайти в программную панель. При помощи простого алгоритма деактивируем права у одного пользователя и включаем у другого:

  • Развернуть панель управления через строку поиска на панели задач.

скриншот_14

  • Найти и кликнуть на пункт «Учетные записи пользователя».

скриншот_15

  • Выбрать подпункт «Управление другой учетной записью».

скриншот_16

  • В списке отметить пользователя, которому необходимо разрешить администрирование, и нажать пункт с изменениями типа аккаунта.

скриншот_17

  • Поставить галочку в поле напротив администратора.

Можно и совсем отключить контроль UAC на некоторое время, там же:

  • Зайти в «Панель управления» — «Учетные записи пользователя».

скриншот_18

  • В пространстве отдела установить ползунок на самом нижнем уровне, напротив пометки: «Никогда не уведомлять».

скриншот_19

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

Читайте также: