Как запустить программу без пароля администратора windows 10

Некоторые программы при запуске могут требовать повышения прав до администратора (значок щита у иконки), однако на самом деле для их нормальной работы права администратора не требуется (например, вы можете вручную предоставить необходимые NTFS разрешения пользователям на каталог программы в Program Files и ее ветки реестра). Если на компьютере включен контроль учетных записей (User Account Control), то при запуске такой программы из-под непривилегированного пользователя появится запрос UAC и Windows потребует от пользователя ввести пароль администратора. Чтобы обойти этот механизм многие просто отключают UAC или предоставляют пользователю права администратора на компьютере, добавляя его в группу локальных администраторов. Оба эти способа не рекомендуется широкого использовать, т.к. вы снижаете безопасность и защиту Windows. В этой статье мы рассмотрим, как запустить программу, которая требует права администратора, от имени простого пользователя и подавить запрос повышения привилегий UAC.

Содержание:

  • Предоставить пользователю права на запуск программы
  • Запуск программы, требующей права администратора, от обычного пользователя
  • Запуск программы в режиме RunAsInvoker из командной строки
  • Включить режим RunAsInvoker в манифесте exe файла программы
  • Запуск программы с сохраненным паролем администратора

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

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

  • Программе нужно получить доступ на системный каталог или файл, на отсутствуют NTFS разрешения для непривилегированных пользователей;
  • Если программа собрана со специальным флагом, которые требует повышения прав при запуске (requireAdministrator).

В первом случае для решения проблемы администратору достаточно предоставить RW или Full Control разрешения на каталог программы или необходимый системных каталог. Например, программа хранит свои файлы (логи, файлы конфигурации и т.д.) в собственной папке в C:\Program Files (x86)\SomeApp) или каком-то системном каталоге. Для корректной работы программы пользователю нужны права записи в эти файлы. По умолчанию у пользователей нет прав на редактирование данного каталога, соответственно, для нормальной работы такой программы нужны права администратора.

Чтобы разрешить запуск программы под непривилегированным пользователем администратора достаточно вручную предоставить пользователю (или встроенной группе Users) права на изменение/запись на файл/каталог на уровне файловой системы NTFS.

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

Чтобы найти список файлов, папок и ключей реестра, к которым обращается программа, воспользуйтесь утилитой Process Monitor (https://learn.microsoft.com/en-us/sysinternals/downloads/procmon). Включите фильтр по имени процесса программы и найдите все ресурсы, при доступе к которым появляется Access Denied. Предоставьте необходимые права на папки/файлы/ветки реестра.

procmon исследование доступа к файлами и ветка реестра программой при запуске

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

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

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

Рассмотрим более простой способ принудительного запуска любой программы без прав администратора (и без ввода пароля админа) при включенном 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 запушен непривилегированный процесс 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 файлу (понадобятся права администратора).

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run as user without UAC elevation"
[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

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

set __COMPAT_LAYER=Win7RTM 640x480

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

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

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

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

set __COMPAT_LAYER=RUNASINVOKER

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

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

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

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

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

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

<requestedPrivileges>
<requestedExecutionLevel          level="requireAdministrator"          uiAccess="false"/>
</requestedPrivileges>

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

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

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

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

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

Если исполняемый файл программы подписан цифровой подпись (сертификатом 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 и убедитесь, что программа использует внешний файл манифеста, и запускается без прав администратора.

Запуск программы с сохраненным паролем администратора

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

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

Например:

runas /user:wks-1122h2\root /savecred "C:\CorpApp\myapp.exe"

ярлык для запуска от администратора с помощью опции savecred

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

сохранить пароль администратора для запуска программы

Утилита RunAs при запуске с параметром /SAVECRED сохраняет имя пользователя и пароль в диспетчере паролей Windows (Credentials Manager).

При следующем запуске ярлыка утилита runas автоматически получит сохраненный пароль из Credentials Manager и использует его для запуска программы от имени указанного локального администратора (пароль не запрашивается повторно при каждом запуске).

Вы можете вывести список пользователей с сохраненными паролями в Credential Manager с помощью команды:

RunDll32.exe keymgr.dll,KRShowKeyMgr

сохраненные пароли администратора в credential manager

В Windows 11 при запуске такого ярлыка появляется ошибка:

RUNAS ERROR: Unable to run - C:\CorpApp\myapp.exe
740: The requested operation requires elevation.

ошибка runas 740: The requested operation requires elevation

Чтобы исправить ошибку, отредактируйте команду в свойствах ярлыка. Замените ее на:

C:\Windows\System32\runas /profile /user:WKS-1122H2\root /savecred "cmd.exe /C C:\CorpApp\myapp.exe"

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

Как мы указывали выше, использование параметра
/savecred
не безопасно, т.к. пользователь, в чьем профиле сохранен чужой пароль может использовать его для запуска любой программы или команды под данными привилегиями, или даже сменить пароль пользователя с правами администратора. Кроме того, сохраненные пароли из Credential Manager можно получить в открытом виде с помощью утилит типа Mimikatz, лучше <запретить использование сохраненных паролей.

В Windows можно заблокировать возможность сохранения паролей в Credential Manager с помощью параметра групповой политики Network access: Do not allow storage of passwords and credentials for network authentication (Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options).

Преодолеть недостаток использования сохраненного пароля через runas позволяют несколько сторонних утилит. Например, AdmiLink, RunAsRob, RunAsSpc. Эти программы позволяют сохранить пароль администратора в зашифрованном виде и безопасно запустить программу с правами администратора. Эти утилиты проверяют при запуске путь и контрольную сумму исполняемого файла и не позволят запустить произвольную программу.

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

В этой инструкции подробно о способе выполнить установку программы не имея прав Администратора в Windows 11, Windows 10 и других версиях системы.

Установка программы без прав и ввода пароля учетной записи Администратора

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

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

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

  1. Запустите командную строку, для этого в поиске на панели задач начните набирать «Командная строка» и выберите нужный результат, либо нажмите клавиши Win+R на клавиатуре, введите cmd и нажмите Enter.
  2. В командной строке введите команду
    set __COMPAT_LAYER=RunAsInvoker

    и нажмите Enter.

  3. Введите путь к файлу установщика и нажмите Enter (либо просто перетащите файл на окно командной строки, чтобы вставить полный путь к нему). Запуск установки программы без прав администратора
  4. Если всё прошло гладко, установка программы должна запуститься, и её можно продолжить, с учётом описанных далее нюансов. Процесс установки без прав администратора

А теперь о важных особенностях такой установки: команда, введённая на втором шаге, не даёт нам прав администратора в системе, а лишь убирает запрос контроля учетных записей.

  • Главное последствие этого при установке программ описанным способом— невозможность устанавливать их в защищенные системные папки. В последних версиях Windows это, в том числе, папка Program Files, то есть придется создавать свою папку для устанавливаемых программ в расположении, где это разрешено.
  • Также установщик не сможет прописать параметры в реестр «для всех пользователей», что для некоторых программ может привести к их неправильной работе, для некоторых других, как для архиватора из примера выше — невозможности прописать ассоциации файлов и добавить пункты в контекстные меню папок и файлов (хотя сама программа исправно работает).
  • Удалить установленные показанным способом программы, не имея прав администратора не получится через «Программы и компоненты». Для удаления потребуется тем же методом запускать файл удаления (uninstall) из папки программы.

Если установка программ, а также запуск утилит, требующих прав администратора вам требуется регулярно, при этом прав администратора нет, вы можете создать bat-файл со следующим содержимым:

set __COMPAT_LAYER=RunAsInvoker && start "" %1

и в дальнейшем запускать такие установщики и программы простым перетаскиванием установщика на созданный файл .bat.

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

Как и в предыдущем способе, работоспособность не гарантирована: в случае, если для каких-то процедур программе требуются «настоящие» права администратора, выполнить их она не сможет.

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

Время на прочтение
7 мин

Количество просмотров 176K

(с) Вася Ложкин.

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

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

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

Ну, и зачем тебе права?

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

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

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

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

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

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

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

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

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

Нет, не будет тебе прав

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

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

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

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

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

set __COMPAT_LAYER=RUNASINVOKER

То запроса 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 /savecred /user:Администратор "C:\Program Files\7-Zip\7zFM.exe" 

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

)

Вводим пароль.

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

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

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

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

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

$Cred = Get-Credential

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

$Cred.Password | ConvertFrom-SecureString | Set-Content c:\pass.txt

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

$username = "Domain\Администратор"

$pass = Get-Content C:\pass.txt | ConvertTo-SecureString

$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $pass

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

$AESKey = New-Object Byte[] 32

[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey)

$AESKey | out-file C:\password_aes.key

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

$Cred.Password| ConvertFrom-SecureString -Key (get-content C:\password_aes.key

)| Set-Content C:\pass.txt

И расшифровать:

$pass = Get-Content C:\pass.txt | ConvertTo-SecureString -Key (get-content C:\password_aes.key)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Содержание

  • Устанавливаем программу без прав администратора
    • Способ 1: Выдача прав на папку с программой
    • Способ 2: Запуск программы с учетной записи обычного пользователя
    • Способ 3: Использование портативной версии программы
  • Вопросы и ответы

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

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

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

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

Способ 1: Выдача прав на папку с программой

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

  1. Войдите в систему через учетную запись администратора. Подробнее о том, как это сделать в Виндовс 7 читайте в нашей статье по ссылке ниже.
  2. Подробнее: Как получить права администратора в Windows 7

  3. Перейдите к папке, в которую в дальнейшем будут устанавливаться все программы. Нажмите на нее правой кнопкой мыши и выберите «Свойства».
  4. Свойства папки Windows 7

  5. Откройте вкладку «Безопасность» и под списком нажмите на «Изменить».
  6. Настройки безопасности папки в Windows 7

  7. Левой кнопкой мыши выберите необходимую группу или пользователя для предоставления прав. Поставьте галочку «Разрешить» напротив строки «Полный доступ». Примените изменения, нажав на соответствующую кнопку.
  8. Настройки безопасности папки в Windows 7

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

Способ 2: Запуск программы с учетной записи обычного пользователя

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

  1. Откройте «Выполнить» нажатием горячей клавиши Win + R. Введите в строку поиска cmd и нажмите «ОК»
  2. Запуск командной строки в Windows 7

  3. В открывшемся окне введите команду, описанную ниже, где User_Name – имя пользователя, а Program_Name – название необходимой программы, и нажмите Enter.
  4. runas /user:User_Name\administrator Program_Name.exe

    Ввод команды в командную строку Windows 7

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

Способ 3: Использование портативной версии программы

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

  1. Перейдите на официальный сайт необходимой программы и откройте страницу загрузки.
  2. Начните загрузку файла с подписью «Portable».
  3. Поиск портативной версии программы

  4. Откройте скачанный файл через папку загрузок или сразу из браузера.
  5. Запуск портaтивной версии программы

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

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

Читайте также: Используем учетную запись Администратора в Windows

Еще статьи по данной теме:

Помогла ли Вам статья?

Вы тут: Главная Windows Как выполнять задачи с полными правами обычным пользователем без ввода пароля администратора

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

Это решение родилось у меня экспромтом в ответ на вопрос в чате инсайдеров. Я подкинул идею, а участник чата легко реализовал ее самостоятельно. Сегодня я подробно разберу подход и решение. И нет, оно не про утилиту AdmLink или runas /savecred.

[+] Сегодня в программе

Зачем такое может понадобиться

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

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

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

Предупредительные выстрелы

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

  • Обычно, при постановке такой задачи сразу вспоминают AdmiLink и команду runas /savecred. AdmiLink – стороннее решение, а мой подход использует только встроенные возможности Windows. В свою очередь runas дает пользователю возможность запускать с сохраненными учетными данными любую задачу, нежели только предусмотренную администратором.
  • Мое решение задействует встроенные возможности Windows, но не является эксплуатацией уязвимостей. В качестве администратора вы своими руками создаете все необходимые условия для запуска, поэтому надо подстраховаться↓
  • Я категорически не рекомендую этот подход для запуска интерактивных приложений, хотя в рамках инструкций статьи он и не должен работать. Как правило, у приложений есть диалог Открыть / Сохранить как, откуда легко запускается командная строка с правами администратора или системы, а дальше все что угодно. Запуск скрипта несет меньше риска.
  • Скрипт для выполнения административной задачи должен находиться в расположении, на которое у пользователя нет прав на запись. Это может быть профиль администратора, системная папка или корень диска. В принципе, годится любое расположение при условии, что для скрипта установлен высокий уровень целостности.
  • У пользователя не должно быть возможности изменять автономную систему. Это решается шифрованием диска, паролем на BIOS, запретом загрузки с внешних носителей, опечатыванием корпуса ПК и т.д.

Алгоритм решения

Задача решается в два хода с помощью планировщика заданий.

  1. Администратор создает в планировщике задание, которое запускается с полными правами при появлении в журнале заданного события и выполняет команду или скрипт.
  2. Пользователь выполняет команду, создающую событие в журнале. Для этого не нужны полные права.

В результате задание срабатывает по событию. Все счастливы!

Реализация решения

Плясать надо от события, с него и начну.

Шаг 1 — Создание события в журнале

Поскольку действие пользовательское, нужна максимально простая реализация.

Я выбираю ярлык на запуск команды – его можно запускать мышью и сочетанием клавиш.

Создать событие можно командлетом PowerShell Write-Eventlog, но проще задействовать встроенную утилиту eventcreate. Она создает в указанном журнале событие с нужным номером, источником и описанием.

eventcreate /L Application /T Information /ID 777 /SO outsidethebox /D "Think outside the box!"

Если источник новый, как в этом примере, сначала зарегистрируйте его в системе, однократно выполнив команду от имени администратора. Для пользователя создайте на рабочем столе новый ярлык и вставьте туда команду. Она создает в журнале «Приложения» информационное событие 777 от источника outsidethebox с описанием Think outside the box!

Шаг 2 — Создание задания в планировщике

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

Команда в задании

Я не могу знать, какую команду вы захотите выполнять по событию. Допустим, из корня системного диска выполняется скрипт PowerShell RunAsAdmin.ps1 (изменять его смогут только пользователи с полными правами).

В PowerShell от имени администратора выполните:

$script = "C:\RunAsAdmin.ps1"
New-Item -ItemType File -Path $script
#выполнить если файл не в корне системного диска
#icacls $script /setintegritylevel high
#https://www.outsidethebox.ms/14318/#_Toc343199595

В запланированном задании на вкладке Действия укажите такие параметры:

  • Команда/скрипт: powershell
  • Аргументы: -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -file C:\RunAsAdmin.ps1

Учетная запись для запуска задания

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

  1. На вкладке Общие установите переключатель Выполнять для всех пользователей.
  2. Для запуска от имени:
    • администратора установите флажок Выполнять с наивысшими правами, затем нажмите ОК и введите пароль своего аккаунта.
    • системы нажмите Изменить и введите SYSTEM или СИСТЕМА в зависимости от локализации, затем дважды нажмите OK.

Примеры скриптов PowerShell

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

Управление состоянием устройства

Я уже показывал работу с модулем PNPDevice. Здесь я для разнообразия разберу отключение и включение камеры.

Выполнив Get-PNPDevice в PowerShell от имени администратора, вы увидите список всех устройств. Ориентируясь на их классы и имена, вы легко можете вывести ИД устройства и его статус.

Get-PnpDevice | Where-Object Class -eq Camera | Format-List FriendlyName,InstanceId,Status

FriendlyName : Integrated Camera
InstanceId   : USB\VID_5986&PID_02D2&MI_00\7&153E4771&0&0000
Status       : OK

У отключенного устройства будет статус Error. Теперь можно менять состояние устройства в зависимости от текущего статуса с помощью командлетов Enable-PNPDevice и Disable-PNPDevice. Если статус OK – выключаем, иначе – включаем.

$id = "USB\VID_5986&PID_02D2&MI_00\7&153E4771&0&0000"
if ((Get-PNPDevice -InstanceId $id).Status -eq 'OK') {
    Disable-PNPDevice -InstanceId $id -Confirm:$False
	}
else {Enable-PNPDevice -InstanceId $id -Confirm:$False}

Создание запланированного задания с триггером по событию

Пожалуй, самый простой способ — создать задание вручную, а для автоматизации — экспортировать его в XML и импортировать с schtasks или командлетом PowerShell Register-ScheduledTask.

Register-ScheduledTask -Xml "C:\temp\runasadmin.xml" -TaskName "RunAsAdmin"

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

SCHTASKS /Create /TN "RunAsAdmin" /TR "powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -file C:\RunAsAdmin.ps1" /SC ONEVENT /RU SYSTEM /EC Application /MO "*[System[Provider[@Name=\"outsidethebox\"] and (EventID=777)]]"

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

#Переменные
$system = "NT AUTHORITY\SYSTEM"
#Создание задания
$taskname = "RunAsAdmin"
#Общие: выполнять от имени системы вне зависимости от входа
$principal = New-ScheduledTaskPrincipal -UserId $system -LogonType ServiceAccount
#Триггер по событию
$trigger.Enabled = $true
$trigger.Subscription = '<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='outsidethebox'] and (EventID=777)]]</Select>
  </Query>
</QueryList>'
#Параметры: запускать при работе от батареи; запускать немедленно если пропущено
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -StartWhenAvailable
#Команда...
$execute = "powershell"
#... и ее параметры командной строки
$argument = "-ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -file 'C:\RunAsAdmin.ps1'"
#Действие: "команда + параметры командной строки"
$action = New-ScheduledTaskAction -Execute $execute -Argument $argument
#Создать задание в планировщике
Register-ScheduledTask -TaskName $taskname -Action $action -Trigger $trigger -Settings $settings -Principal $principal -Force
#Для запуска от имени администратора измените $principal, а в конце команды↑ добавьте: -RunLevel Highest

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

  1. Если вы используете свое событие, создайте хотя бы одно утилитой eventcreate и перезапустите eventvwr.msc.
  2. Перейдите в журнал, в котором создано событие, отфильтруйте его по источнику и событию (можете указать несколько источников/событий).
  3. В фильтре перейдите на вкладку XML и скопируйте запрос. Затем отредактируйте его, заменяя все одинарные кавычки на двойные (например, в названии провайдера).
    xpath
  4. Подставьте исправленный запрос в переменную $trigger.Subscription (PowerShell) или в параметры /EC и /MO (schtasks) . Если при выполнении скрипта возникают ошибки триггера, попробуйте вытянуть запрос в одну строку, т.е. уберите переносы строк и лишние пробелы

Заключение

В блоге планировщик играет заметную роль почти в двух десятках статей! И в очередной раз с его помощью легко решается сложная на вид задача.

На мой взгляд, это – самый простой подход к решению в домашних условиях, но не единственный. Дома и в организации задачу можно решить на PowerShell, используя технологию Just Enough Administration (JEA). Ссылки для самостоятельного изучения:

  • Just Enough Administration (документация)
  • Secure Your Powershell Session with JEA and Constrained Endpoints

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

  • Как запустить программу windows программу на linux
  • Как запустить проверку драйверов windows 10
  • Как запустить приложение для windows на android
  • Как запустить последнюю удачную конфигурацию на windows 10 через биос
  • Как запустить проверку диска до запуска windows