[Конспект админа] Что делать, если программа хочет прав администратора, а вы нет

К сожалению, в работе сисадмина нет-нет да и приходится разрешать пользователям запускать всякий софт с админскими правами. Чаще всего это какие-нибудь странные китайские программы для работы с оборудованием. Но бывают и другие ситуации вроде небезызвестного bnk.exe.
Выдавать пользователю права администратора, чтобы решить проблему быстро и просто, противоречит нормам инфобезопасности. Можно, конечно, дать ему отдельный компьютер и поместить в изолированную сеть, но — это дорого и вообще…
Попробуем разобрать решения, которые позволят и программу запустить, и безопасника с финансистом не обозлить.
Ну, и зачем тебе права?
Программа может запрашивать права администратора условно в двух случаях:
- Когда хочет получить доступ туда, куда «простым смертным» нельзя: например, создавать файлы в системных каталогах.
- Когда программу скомпилировали со специальным флагом «Требовать права администратора».
С первым случаем все понятно: берем в руки замечательную программу Марка Руссиновича 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С с сайта РБК по ссылке http://cbrates.rbc.ru/bnk/bnk.exe. Если обновление классификаторов отдается на откуп самим пользователям и нет возможности поменять загрузку на bnk.zip (а современные 1С это поддерживают), то приходится придумывать костыли. Ведь bnk.exe — самораспаковывающийся архив, в котором зачем-то прописано «Требовать права администратора».
Поскольку ярлычками тут обойтись не выйдет, ведь 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, можно будет запускать абсолютно любую программу. Это мало чем отличается от прямого предоставления админских прав сотрудникам, так что использовать это решение не стоит.
Если мы начали с консольных команд, то перейдем к более высокоуровневым скриптам. Интересное решение было предложено в статье «Планктонная Windows», где упомянутый выше Runas обвязывался js-скриптом и пропускался через обфускатор. У решения есть и очевидный минус — скрипт можно раскодировать.
Чуть более интересным методом в 2к20 являются возможности PowerShell и его работа с паролями. Подробнее можно почитать в материале «Защита и шифрование паролей в скриптах PowerShell».
Если вкратце: в PS работа с паролями производится через специальный тип данных SecureString и объект PSCredential. Например, можно ввести пароль интерактивно:
Затем сохранить пароль в зашифрованном виде в файл:
И теперь использовать этот файл для неинтерактивной работы:
К сожалению, файл этот можно использовать только на том ПК, на котором его создали. Чтобы этого избежать, можно сделать отдельный ключ шифрования. Например так:
Теперь при помощи этого ключа пароль можно зашифровать:
К сожалению, с безопасностью дела обстоят так же печально: утащить пароль не составляет трудностей, если есть доступ к файлу с ключом шифрования и зашифрованным паролем. Да, можно добавить обфускации и скомпилировать скрипт в .exe вместе с нужными файлами. Но нужно понимать, что это — полумеры.
Другим интересным вариантом может быть применение назначенных заданий — если создать назначенное задание от админского аккаунта, пользователю для работы будет достаточно его запуска. К сожалению, для интерактивной работы с приложением это решение не подходит.
На свете существует несколько сторонних решений, призванных решить задачу. Остановлюсь на парочке из них.
Пожалуй, одна из самых известных утилит — это AdmiLink, разработанная Алексеем Курякиным для нужд ядерной физики. Программа и принципы ее работы описаны на официальном сайте. Я, как обычно, позволю себе более краткое описание.
Программа состоит из трех модулей. AdmiLink — это графическое окно, где можно создать ярлык на нужное приложение (в принципе, в ряде случаев достаточно только его).

Основное окно программы.
Помимо непосредственно создания ярлыка (и да, запрос UAC тоже можно подавлять), есть и дополнительные функции вроде калькулятора, терминала и удобных настроек политик безопасности. Со всеми возможностями программы читателю предлагается разобраться самостоятельно.
Второй модуль называется AdmiRun и представляет из себя консольную утилиту. Она умеет запускать приложения от имени администратора, получив в качестве одного из параметров строку, созданную через AdmiLink. В строке шифруется имя пользователя и пароль, при этом участвует и путь к программе.
На первый взгляд все выглядит безопасно, но, к сожалению, код программ закрыт, и насколько можно доверять разработчику — вопрос.
Третий модуль — AdmiLaunch — отвечает за запуск окон в разных режимах, и он используется для запуска AdmiRun, если создавать ярлык через AdmiLink.
В целом, решение проверено годами и поколениями отечественных системных администраторов. Но добавлю и альтернативу из-за рубежа.
RunAsRob — довольно интересное ПО за авторством немецкого разработчика Оливера Хессинга (Oliver Hessing). В отличие от AdmiLink, ПО устанавливается как служба, запускаемая под привилегированной учетной записью (администратора или системы). Как следствие, подготовленный ярлык обращается к службе, которая уже в свою очередь запускает заданное ПО.
Особенность программы в том, что есть возможность авторизовать не только программы, но и папки (включая сетевые). А хранение настроек в реестре позволило добавить шаблоны групповых политик, примерно как мы писали в статье «Погружение в шаблоны и приручение GPO Windows». Благодаря этому при необходимости настройки можно применять прямо из Active Directory.

Основное окно программы.
Программа богато документирована на официальном сайте.
У этого автора есть еще и программа RunAsSpc, позволяющая запускать исполняемые файлы под правами другого пользователя, передавая учетные данные через зашифрованный файл.
Мне остается только добавить, что это ПО бесплатно только для личного использования.
Но учтите, что из программы, запущенной под административными правами, можно натворить бед. Например, запустить привилегированную командную консоль через диалог Файл — Открыть.

Запускаем cmd.exe прямо из редактора реестра.
Немного защититься помогут политики запрета контекстного меню и прочих диспетчеров задач, часть из которых может настроить AdmiLink. Но в любом случае следует быть осторожным.
А вам приходилось городить странные костыли? Предлагаю делиться историями в комментариях.
Как запустить программу от имени администратора [10 способов!]
Рассмотрим несколько способов запустить программу от имени администратора в Windows 10, для исправления ошибок: «CreateProcess сбой, код 740«, «Запрошенная операция требует повышения«, «Отказано в доступе» и др., возникающих при запуске программ с ограниченными правами (пользователь, гость).
По умолчанию программы и игры в Windows 10 запускаются без прав администратора, чтобы предотвратить несанкционированные изменения в вашей системе. Но частый случай, когда для корректной работы программы требуются запуск с повышенными правами (администратор), для правильной работы или выполнения определенных команд.
⚠️ Внимание: для запуска программы с повышенными правами, вам потребуется знать пароль администратора!
Содержание
Значок приложения
Как выполнить запуск программы от имени администратора однократно, с помощью значка программы (иконки):
- Щелкните правой клавишей мыши на иконке программы;
- Выберите Запуск от имени администратора.
Свойства файла
Способ, всегда запускать программу с правами администратора с помощью меню Свойства файла.
- Щелкните правой клавишей мыши на иконке программы;
- Выберите Свойства;
- Откройте вкладку Совместимость;
- Установите галочку Запускать эту программу от имени администратора;
- Нажмите ОК.
Эта настройка позволит постоянно запускать эту программу с повышенными правами только для этого пользователя. Если вы хотите разрешить запуск программы с правами администратора для всех пользователей компьютера, в предыдущем окне нажмите кнопку Изменить параметры для всех пользователей и установите галочку Запускать эту программу от имени администратора.
Меню Пуск (контекстное меню)
Запуск программы с повышенными правами используя контекстное меню, в меню Пуск.
- Откройте меню Пуск (Ctrl+ESC);
- Найдите значок программы в списке Все программы;
- Щелкните правой клавишей мыши по значку программы, выберите: Дополнительно -> Запуск от имени администратора.
Этим же способом можно запускать и Плитки приложений в Windows 10, 8.
Меню Пуск (сочетание клавиш)
Клик мышкой и сочетание клавиш в меню Пуск еще один способ запустить программу от имени администратора.
- Откройте меню Пуск (Ctrl+ESC);
- Найдите значок программы в списке Все программы;
- Удерживая нажатыми клавиши Ctrl+Shift щелкните по значку программы.
Запустить программу от имени администратора через меню Выполнить
Способ запуска программы с полными правами используя меню Выполнить.
- Нажмите сочетание клавиш Windows+R (или щелкните по кнопке Пуск правой клавишей мыши и выберите Выполнить);
- Введите имя команды или перетащите мышкой пиктограмму программы в окно ввода меню Выполнить;
- Нажмите сочетание клавиш Ctrl+Shift+Enter.
⭕ Если у вас не получается перенести иконку программы в меню Выполнить:
- Нажмите и удерживайте кнопку Shift, щелкните по пиктограмме программы правой клавишей мыши;
- Выберите пункт Копировать как путь;
- Выполните вставку из буфера обмена в окно Выполнить (нажмите комбинацию клавиш Ctrl+V).
Лента Проводника
Несложный способ запуска любой программы от имени администратора использование ленты проводника Windows 10.
? Если в меню папки не отображается Лента проводника, нажмите сочетание Ctrl+F1.
- Выделите значок программы в Проводнике Windows;
- В меню папки откройте вкладку Средства работы с приложениями;
- Выберите пункт Запустить от имени администратора.
Окно Поиск
Запустить программу с правами администратора так же можно используя Поиск Windows 10.
- Нажмите сочетание Windows+S (или щелкните по кнопке Пуск правой клавишей мыши и выберите Поиск);
- Введите название нужной программы;
- В правой части окна щелкните пункт Запуск от имени администратора.
Запуск программы от имени администратора используя командную строку (CMD)
Однократный способ запуска программы от имени администратора, используя командную строку Windows (CMD).
Простым способом запуска является запуск Командной строки от имени администратора, из которой выполняется запуск нужной программы. Но вы так же можете выполнить запуск из консоли CMD (с правами пользователя), используя команду runas.
- Запустите командную строку;
- Выполните команду runas, указав имя пользователя с административными правами и полный путь до файла запускаемой программы;
- Введите пароль пользователя с административными правами.
Запуск программы от имени администратора используя PowerShell
Еще один способ запуска программы с повышенными правами — с помощью Microsoft PowerShell.
Простым способом запуска является запуск PowerShell от имени администратора и запуск необходимой программы. Но вы так же можете выполнить запуск из консоли PowerShell (с правами пользователя), используя команду start-process.
- Запустите PowerShell;
- Выполните команду start-process, указав полный путь до файла запускаемой программы;
- Введите пароль пользователя с административными правами.
Bat файл
В некоторых случая использовать предыдущие способы может быть неудобно, создадим bat файл с инструкциями по запуску программы.
Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды.
Wikipedia
- Запустим стандартное приложение Блокнот (Notepad);
- Указываем необходимую последовательность команд;
- В меню Файл выбираем пункт Сохранить как;
- В поле Имя файла указываем имя файла и дописываем расширение bat;
- В поле Тип файла указываем Все файлы;
- Нажимаем кнопку Сохранить.
Теперь запустить программу с правами администратора можно запустив созданный файл.

Узнать больше команд которые можно использовать в bat файлах — перейти.
? Как запустить программу от имени администратора обсуждалось в этой статье. Я надеюсь, что теперь знаете как исправить ошибку 740 или «Запрошенная операция требует повышения» запустив программу с повышенными правами, удобным способом. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.
РЕШЕНИЕ: Как запустить программу без прав администратора
Статья представляет собой простой способ принудительного запуска программы без прав администратора и подавлением запроса контроля учетных записей пользователей (UAC).
Многие программы при запуске требуют повышения прав (значок щита у иконки), однако на самом деле для их нормальной работы права администратора не требуется.
Соответственно, если на компьютере включен контроль учетных записей, то при запуске такой программы из-под непривилегированного пользователя появится запрос UAC и Windows потребует от пользователя ввести пароль администратора.
В данной статье, в качестве примера, продемонстрирован запуск установочного файла программы WinRAR однако, приведенный ниже способ подходит для запуска и установки большинства программ на ОС Windows 7, 8, 8.1, 10, 11.
Решение:
1. При попытке запуска программы требующей повышения прав (прим. в данном примере это WinRAR) перед вами появится окно Контроль учетных записей пользователя с запросом имени и пароля пользователя имеющего права администратора. Если не указать пароль и не подтвердить повышение привилегии, приложение не запустится (Рис.1).
2. Вызовите меню (прим. для вызова меню нажмите правой кнопкой мыши), выберите Создать, затем выберите Текстовый документ (прим. после создания текстового документа, присвойте ему имя. В данном примере имя RUN, но вы можете выбрать любое другое) (Рис.2).
3. Откройте созданный текстовый документ и введите:
cmd /min /C «set __COMPAT_LAYER=RUNASINVOKER && start «» %1″
(прим. можете скопировать отсюда и вставить в текстовый документ) (Рис.3).
4. Выберите в окне Файл, затем нажмите Сохранить как… (Рис.4).
5. Сохраните текстовый документ с расширением .bat (прим. в данном примере это RUN.bat) (Рис.5).
6. Для принудительного запуска приложения без прав администратора и подавлением запроса UAC, перетащите файл, который нужно запустить (прим. в данном примере это WinRAR) на созданный .bat файл (прим. в данном примере это RUN.bat) на рабочем столе (Рис.6).
7. Файл запустится без появления запроса UAC и без ввода пароля администратора (Рис.7).
Запуск программы без прав администратора завершен !
Как разрешить пользователям запускать программы от имени администратора без пароля
С помощью простого трюка вы можете позволить пользователям, не являющимся администраторами, запускать программы, требующие прав администратора, без фактического указания им пароля. Позвольте мне показать вам, как это сделать.
Если вы используете общий компьютер или у вас есть пользователи, использующие стандартную учетную запись, у них не будет разрешения на запуск приложений, требующих прав администратора. В общем, это ограничение является хорошим, поскольку чаще всего программе, требующей административных привилегий, требуется доступ или изменение системных настроек или файлов.
При этом могут возникнуть ситуации, когда вы необходимо разрешить обычным пользователям запускать программы, требующие прав администратора. В таких случаях вместо того, чтобы каждый раз вручную вводить пароль администратора или предоставлять им полные административные привилегии, вы можете использовать функцию запуска от имени и диспетчера учетных данных Windows.
Без лишних слов, позвольте мне покажу, как это делается.
Примечание: я предполагаю, что вы знаете имя своего компьютера. Если нет, введите «Системная информация» в меню «Пуск» и откройте его. Вы увидите имя своего компьютера рядом с «Имя системы».
Запускать программы от имени администратора без пароля
Чтобы позволить пользователю без прав администратора запускать приложения администратора, вам нужно создать специальный ярлык, который использует команду runas . Если вы последуете этому подходу, вам просто нужно будет ввести пароль администратора один раз. Со следующего раза Windows не будет запрашивать пароль для этого конкретного ярлыка приложения.
Хотя звучит сложно, это довольно просто. Просто следуйте инструкциям, и все будет хорошо.
1. Во-первых, нам нужно создать ярлык. Итак, щелкните правой кнопкой мыши на рабочем столе и выберите «Создать → Ярлык».

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

3. Теперь назовите ярлык как хотите. Нажмите кнопку «Готово».
4. Вышеупомянутое действие создаст ваш собственный ярлык.
5. Как я сказал ранее, в первый раз вам нужно введите пароль администратора. Итак, дважды щелкните вновь созданный ярлык. Вы увидите окно командной строки. Введите пароль своей учетной записи и нажмите кнопку Enter на клавиатуре.
6. Приложение будет работать с правами администратора.
С этого момента любой пользователь, не являющийся администратором, может использовать ярлык для запуска целевой программы от имени администратора без ввода пароля администратора.
Когда вам больше не нужна функциональность, просто удалите ярлык, и все готово..
Заключение
Как видите, довольно просто разрешить стандартным пользователям запускать программы с правами администратора. Как бы хорош ни был трюк, используйте его только тогда, когда это абсолютно необходимо и когда вы доверяете и пользователю, и приложению.
Надеюсь, что это поможет. Если вы застряли или вам нужна помощь, прокомментируйте ниже, и я постараюсь помочь в максимально возможной степени.
Если вам понравилась эта статья, узнайте, как включить скрытую учетную запись администратора и как просмотреть полные данные учетной записи пользователя в Windows 10.