Как запустить программу от имени системы windows 10
Во всех поддерживаемых версиях Windows существует возможность запускать в текущей сессии программы от имени другого пользователя ( Run As ). Благодаря этому можно выполнить скрипт (.bat, .cmd, .vbs, .ps1), исполняемый .exe файл или запустить установку приложения (.msi, .cab) с полномочиями другого пользователя (привелигированного).
К примеру, благодаря возможности использовать функционал Run As можно в сессии пользователя с ограниченными правами запустить установку программы или открыть нужную MMC оснастку управления компьютером под административной учетйно записью. Также возможность запуска программы «от имени» может быть полезна в ситуациях, когда приложение настроено под другим пользователем (и соответственно хранит свои настройке в чужом профиле, к которому у данного пользователя нет данных), а его нужно запустить с теми же настройками в сессии другого пользователя.
В Windows 10 есть несколько способов запустить процесс от имени другого пользователя.
Запуск программы от имени другого пользователя из Проводника (File Explorer)
Самый простой способ запустить приложение под другим пользователем – воспользоваться графическим интерфейсом Проводника Windows (File Explorer). Просто найдите нужно приложение (или ярлык), зажмите клавишу Shift и щелкните по нему правой кнопкой мыши. Выберите пункт контекстного меню « Запуск от имени другого пользователя » (Run as different user).
Примечание . Если пункт меню « Запуск от имени другого пользователя » отсутствует, см. следующий раздел.
В появившемся окне нужно будет указать имя и пароль пользователя, под чьей учетной записью нужно запустить приложение и нажать кнопку ОК .
Примечание . Если нужно указать доменного пользователя, используется один из следующий форматов имени: UserName@DomainName или DomainName\UserName
Важно . Запуск программы от имени другого пользователя возможен, если для него задан пароль. Использовать Run as для учетки с пустым паролем не получится.
Откройте Диспетчер задач и убедитесь, что приложение запущенно под указанным пользователем.
Что делать, если отсутствует пункт «Запуск от имени другого пользователя»
В том случае, если у вас в контекстном меню отсутствует пункт Запуск от имени другого пользователя (Run as different user), откройте редактор групповых политик (gpedit.msc) и убедитесь, что в разделе Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Пользовательский интерфейс учетных данных (Computer Configuration -> Administrative Templates -> Windows Components -> Credential User Interface) отключена (Не задана) политика Запрашивать достоверный путь для входа в учетную запись (Require trusted path for credential entry) .
Утилита Runas:как запустить приложение от имени другого пользователя из командной строки
Запустить программу или скрипт от имени другого пользователя можно и из командной строки или ярлыка приложения. Кроме того, этот способ предполагает возможность сохранения пароля пользователя, чтобы его не пришлось набирать каждый раз. Для этого можно воспользоваться консольной утилитой runas.exe .
Откройте командную строку (или окно Выполнить, нажав сочетание клавиш Win+R ). Для запуска Блокнота под учетной записью admin выполните команду:
runas /user:admin “C:\Windows\notepad.exe”
В отрывшемся окне появится приглашение «Введите пароль для admin», где нужно набрать пароль пользователя и нажать Enter.
Совет . В том случае если имя пользователя содержит пробел, его нужно взять в кавычки.
При необходимости запуска программы под доменным пользователем нужно использовать формат имени UserName@DomainName или DomainName\UserName. Например, чтобы с помощью блокнота открыть текстовый файл от имени доменного пользователя, воспользуемся командой:
runas /user:corp\domain_admin “C:\Windows\notepad.exe C:\tmp\2871997x64.txt”
Введите пароль для corp\domain_admin:
Попытка запуска C:\Windows\notepad.exe C:\tmp\2871997x64.txt от имени пользователя "corp\domain_admin" .
Чтобы создать на рабочем столе ярлык для запуска программы под другим пользователем, просто создайте новый ярлык, в окне с адресом объекта которого укажите нужную команду с runas.
При запуске такого ярлыка будет запрашиваться пароль пользователя.
Чтобы сохранить вводимый пароль другого пользователя нужно воспользоваться ключом /savecred .
runas /user:admin /savecred “C:\Windows\notepad.exe”
После указания пароля он сохранится в диспетчере паролей Windows и при следующем запуске команды runas под этим же пользователем с ключом /savecred система автоматически воспользуешься сохраненным паролем, а не будет запрашивать его повторно.
Однако использование параметра /savecred не безопасно, т.к. пользователь, в чьем профиле сохранен чужой пароль может использовать его для запуска любой команды под данными привилегиями, или даже сменить чужой пароль. Кроме того, сохраненные пароли из Credential Manager можно легко украсть, поэтом лучше запретить использование сохраненных паролей (а тем более нельзя сохранять пароль привилегированной административной учетной записи ).
Примечание . Кроме того, ключ /savecred не работает в Home редакциях Windows.
Запуск MMC оснасток от имени другого пользователя
В некоторых случаях от имени другого пользователя нужно запустить одну из управляющих оснасток Windows. К примеру, если под другим пользователем нужно запустить оснастку Active Directory Users and Computers , можно воспользоваться такой командой.
runas.exe /user:DOMAIN\USER “cmd /c start \”\” mmc %SystemRoot%\system32\dsa.msc”
Аналогичным образом можно запустить любую другую оснастку (главное знать ее имя).
Как добавить пункт «Запуск от имени..» программам в меню Пуск
По-умолчанию в Windows 10 у элементов меню Пуск (начального экрана) отсутствует возможность запуска приложений под другим пользователем. Чтобы добавить контекстное меню «Запуск от имени другого пользователя» нужно включить политику Показывать команду «Запуск от имени другого пользователя» при запуске ( Show “Run as different user” command on Start ) в разделе редактора групповых политик (консоль gpedit.msc) Конфигурация пользователя -> Административные шаблоны -> Меню Пуск и панель задач (User Configuration -> Administrative Templates ->Start Menu and Taskbar).
Либо, если редактор gpedit.msc отсутствует , создать в ветке реестра HKEY_CURRENT_USER\Software\Policies\
Microsoft\Windows\Explorer ключ типа DWORD с именем ShowRunasDifferentuserinStart и значением 1.
Осталось обновить политики (gpupdate /force) и убедиться, что у программ в меню Пуск появится новое контекстное меню Дополнительно -> Запуск от имени другого пользователя .
В операционных системах Windows прав локального администратора хватает для выполнения практически любых действий. Но иногда бывают ситуации, когда админских прав все же недостаточно.
Для примера откроем редактор реестра и попробуем в разделе HKEY_LOCAL_MACHINE\SECURITY создать подраздел. Как видите, у нас ничего не получилось, нет доступа.
Дело в том, что доступ к этим разделам имеет только система, для всех остальных пользователей они закрыты. И единственный способ попасть в них — это запустить редактор реестра от имени системы.
Учетная запись системы — это встроенная учетная запись SYSTEM, которую диспетчер управления службами (Service Control Manager, SCM) использует для управления службами. Эта учетная запись предоставляет максимально широкие привилегии в локальной системе и имеет доступ к большинству системных объектов. Соответственно любой процесс, выполняемый в контексте учетной записи SYSTEM, наследует все ее права и доступы.
Примечание. Насчет названия учетной записи есть некоторые разночтения. Так в зависимости от того, где она используется, ее могут называть SYSTEM, NT AUTHORITY\SYSTEM, LocalSystem или ComputerName\LocalSystem.
Для запуска от имени системы есть много различных способов, я расскажу о двух наиболее простых. Итак, способ первый.
PsExec
Утилита командной строки PsExec входит в состав пакета PsTools от Sysinternals. Изначально PsExec предназначена для удаленного управления, но ее можно использовать и для запуска процессов с повышенными привилегиями. Кстати, по этой причине некоторые антивирусы опознают PsExec как ″трояна″.
PsExec не требует установки, достаточно просто скопировать ее в локальную папку и запустить из консоли cmd или powershell. Для удобства использования можно поместить исполняемый файл в системный раздел (C:\Windows\system32). Для примера откроем новое окно командной строки вот такой командой:
psexec.exe -i -s cmd.exe
Ключ -s производит запуск от имени системы, а ключ -i открывает окно в интерактивном режиме. Теперь выполним в новом окне команду whoami и убедимся, что оно запущено от имени пользователя nt authority\system. Таким образом с помощью PsExec можно запустить любое приложение с правами системы.
С PsExec все просто и понятно, этот способ используется с незапамятных времен и до сих пор актуален. Но, исключительно ради разнообразия, рассмотрим еще один способ.
PowerRun
PowerRun — графическая утилита, специально предназначенная для запуска программ с повышенными правами (TrustedInstaller/Nt Authority/System). Установка ей не требуется, достаточно скопировать утилиту в локальную папку и запустить. При желании можно выбрать русскоязычный интерфейс, хотя на мой взгляд в нем нет необходимости. Интерфейс у PowerRun простой, интуитивно понятный, все основные действия вынесены в виде кнопок на центральную панель.
Для запуска приложений есть несколько вариантов запуска, на выбор. Для редактора реестра и командной строки, как для наиболее часто используемых приложений, специально выделены кнопки на панели управления. Для примера нажимаем на кнопку и консоль открывается от имени системы.
Если приложение будет запускаться регулярно, то для него лучше создать отдельную запись. В записи можно указать параметры запуска, такие как путь, ключи и команды, а также рабочую директорию. Окно запуска можно сделать скрытым, минимизировать или наоборот, максимально развернуть. Для управления записями в панели управления имеются три кнопки — создание, удаление и редактирование.
Для примера создадим запись для запуска командной строки. Окно должно открываться в нормальном режиме, в качестве рабочей директории задан профиль текущего пользователя (%userprofile%), после запуска выполняется команда whoami.
Запустить запись можно либо кнопкой, либо из контекстного меню, либо просто двойным кликом.
Дополнительно можно на базе созданной записи создать bat- или vbs-скрипт. Это позволит максимально упростить и ускорить процедуру запуска программы с системными правами.
Особо продвинутые пользователи могут запускать PowerRun напрямую из командной строки. Синтаксис и примеры команд можно посмотреть в справке, которая открывается командой PowerRun.exe с ключом /?.
Для примера запустим все ту же консоль и выполним в ней команду whoami:
PowerRun.exe /K whoami
И еще один интересный момент, о котором надо знать при работе с PowerRun. По умолчанию PowerRun умеет запускать программы с правами пользователей Nt Authority/System и TrustedInstaller. С первым более менее понятно, а вот о втором стоит рассказать чуть подробнее.
Начиная с Windows Vista в операционные системы Windows внедрена технология WRP (windows resource protection), предназначенная для защиты файлов и ключей реестра. WRP при помощи исполняемого модуля trustedinstaller.exe ограничивает доступ к критически важным системным ресурсам для всех пользователей, включая и администраторов. Правом доступа к этим ресурсам обладает только системный пользователь TrustedInstaller, который является их владельцем.
Так вот, PowerRun можно запускать как с правами TrustedInstaller, так и без них. Для переключения нужно открыть конфигурационный файл PowerRun.ini и изменить значение параметра TrustedInstaller. Значение 1 означает наличие прав TrustedInstaller, а 0 — их отсутствие. Также из командной строки для запуска только с правами системы можно указать ключ /SYS.
Как видите, запустить любую программу с правами системы не просто, а очень просто. Но не стоит лезть во внутренности операционной системы без крайней необходимости, поскольку в результате подобного вмешательства есть шанс ее поломать. Ну и конечно, желательно делать резервные копии. На всякий случай 🙂
26.08.2020
itpro
Windows 10, Windows Server 2012 R2, Windows Server 2016
комментариев 9
В Windows для выполнения некоторых действий недостаточно иметь права администратора. Например, вы не сможете заменить или удалить системные файлы, некоторые ветки реестра, остановить системные службы или выполнить другие потенциально небезопасные действия, которые могут нарушить стабильность системы. Системному администратору в таких случая приходится назначать себе владельцем таких объектов или выполнять действия от имени системы. В этой статье мы рассмотрим, как запустить программу или командную строку в Windows от имени привилегированного аккаунта SYSTEM (Local System).
Дисклаймер. Внесение изменение в образ Windows от имени системы – это нештатная операция. Имейте в виду, что некорректные действия с правами NT AUTHORITY\SYSTEM могут сломать вашу Windows. На практике запуск процессов от имени системы используется довольно редко, т.к. в большинстве случаев можно решить проблему более штатными методами: runas, запуск программ без прав админа и подавлением запроса UAC, назначение администратора владельцем файлов/веток реестра, отключение UAC для определенной программы, назначением прав пользователям на службу.
Встроенная учетная запись SYSTEM используется диспетчером управления службами SCM (Service Control Manager) для запуска и управления системными службами. Из-под учетной записи System (может называться NT AUTHORITY\SYSTEM, Local System или Computer\LocalSystem)запускается большинство системных служб и процессов (в том числе ядро NT Kernel). Откройте оснастку управления службами services.msc и обратите внимание на службы, у который в столбце LogOnAs указано Local System. Эти службы запушены из-под учетной записи SYSTEM.
Запуск командной строки от Local System в старых версиях Windows (до Vista)
В снятых с поддержки Windows XP и Windows Server 2003 была интересная возможность, позволяющая запустить программу или же интерактивную командную строку (cmd) с правами системы через планировщик. Достаточно войти с правами администратора, открыть командную строку и набрать в ней:
at 12:23 /interactive cmd.exe
, где 12:23 – текущее время + одна минута (в 24 часовом формате).
После наступления указанного времени перед вами открывается окно командной строки, запущенное с правами Local System. Если вы выполнили эту команду в терминальном (rdp) сессии Windows Server 2003/XP, имейте в виду, что командная строка с правами System отображается только в консольной сессии (как подключиться к rdp консоли).
В Windows 10 запуск интерактивной строки с помощью команды at не поддерживается. Вместо него рекомендуется использовать schtasks.exe .
Запуск программ от имени системы с помощью PSExec в Windows 10
Начиная с Windows 7 трюк с запуском интерактивной командной строки от имени системы через планировщик не работает. Для запуска команд от имени NT Authority\ System можно использовать утилиту PSExec.exe от Sysinternals.
Утилита PSExec не требует установки. Откройте командную строку с правами администратора (“Run as administrator”) перейдите в каталог, в котором находится исполняемый файл PSexec.exe и наберите:
psexec -i -s cmd.exe
параметр -i запускает приложение в интерактивном режиме (пользователь может взаимодействовать с программой на рабочем столе, если это параметр не указывать, процесс запускается в консольной сесии), —s означает что командную строку нужно запустить из-под системы
После выполнения команды появится новое окно с командной строкой, запущенной из-под учетной записи NT Authority\System. Проверьте это, выполнив команду:
Таким образом вы запустить любую программу, команду или скрипт с правами системы. Достаточно в параметре утилиты PsExec изменить cmd.exe на имя исполняемого файла нужной программы.
В открывшемся окне командной строки вы можете выполнять любые команды в контексте SYSTEM. Теперь вы сможете изменить, переименовать или удалить системные файлы/ветки реестра, владельцем которых является TrustedInstaller или SYSTEM. Все программы или процессы, которые вы запустите их этого окна также будут запущены с повышенными привилегиями LocalSystem. Например, можно остановить системную службу, или закрыть дескриптор занятого системой файла.
С помощью PSExec вы можете получить интерактивную командную с правами NT AUTORITY\СИСТЕМА с удаленного компьютера. Для этого используется команда:
psexec -s \\msk-PCBuh2 cmd.exe
При появлении ошибки couldn’t install PSEXESVC service , убедитесь, что:
Есть еще ряд сторонних утилит для запуска программ от имени System (AdvancedRun , RunAsSystem, PowerRun), но я не вижу смысла использовать их смысла. Т.к. во-первых это сторонние утилиты, и вы не можете гарантировать что в их коде нет вредоносных закладок, и во-вторых официальная утилита PsExec от Microsoft отлично справляется с задачей.
Предыдущая статья Следующая статья
Папки на флешке стали ярлыками
Создание WMI фильтров для групповых политик (GPO) в домене AD
Настройка NIC Teaming в Windows Server 2019/2016 и Windows 10
Еще в ХР так можно было запускать Проводник))
ПраваяКнопкаМышм — создать — ярлык — cmd — Сщхранить — Праваякнопкамыши — запустить от имени администратора
С правами System это уже круто! Уже 5 лет увлекаюсь и интересуюсь системным администрированием, но думал, что с правами системы запустить программу или выполнить какое-то действие невозможно. Однако давно понял, что с правами системы прав значительно больше, чем с правами администратора. Так можно остановить защищённый процесс- например антивируса или брандмауэра или какой-то нехорошей программы. Интересная инфа!
помогает при ошибке 0x0000057
Хм, содержательно…
Поделитесь знаниями с миром 🙂 Может еще кому-нибудь пригодится….
а если при запуске PSexec.exe система сообщает — couldn’t install PSEXESVC service?
Скорее всего не хватает прав, либо установка/запуск блокируется локальными настройками (UAC. SRP и т.п.). Нужно журнал событий на компьютере смотреть, там должно быть подробнее описано.
Дизлайк бы поставил, что за бред, с начало в старых версиях до виндовс виста, потом сразу на виндовс 10, у куда девали виндовс 7 и 8.1?
Проспали полимеры….
Для Windows 7 и 8.1 все работает аналогично WIndows 10.
В прошлый раз я показал, как выполнять команды и скрипты от имени системы при наличии прав администратора. Сегодня я объясню, как запускать административные задачи, не имея полных прав.
Это решение родилось у меня экспромтом в ответ на вопрос в чате инсайдеров. Я подкинул идею, а участник чата легко реализовал ее самостоятельно. Сегодня я подробно разберу подход и решение. И нет, оно не про утилиту AdmLink или runas /savecred .
[+] Сегодня в программе
Зачем такое может понадобиться
Иногда в контролируемой среде нужно предоставить возможность обычным пользователям запускать что-то с правами администратора или от имени системы. Например, без полных прав невозможно управление состоянием устройств.
Возьмем реальный пример участника чата. Он единственный администратор на семейном ноутбуке с сенсорным экраном, а остальные члены семьи работают с обычными правами. Нужно дать им возможность включать и отключать сенсорный экран, потому что кого-то путают случайные касания дисплея.
С тем же успехом это могла быть камера ноутбука и разный уровень «паранойи» у членов семьи. Также, потребность в таком решении может возникнуть, если сбой устройства (например, сетевой карты или мыши) лечится его перезапуском, а перезагружать систему для этого нецелесообразно.
Предупредительные выстрелы
Когда вы даете пользователю возможность запускать задачи с полными правами, есть вероятность отдать ему контроль над системой вне зависимости от предпринятых мер предосторожности. Мне неизвестны уязвимости моего решения, но это не значит, что их нет. Вы действуете на свой страх и риск.
- Обычно, при постановке такой задачи сразу вспоминают AdmiLink и команду runas /savecred . AdmiLink – стороннее решение, а мой подход использует только встроенные возможности Windows. В свою очередь runas дает пользователю возможность запускать с сохраненными учетными данными любую задачу, нежели только предусмотренную администратором.
- Мое решение задействует встроенные возможности Windows, но не является эксплуатацией уязвимостей. В качестве администратора вы своими руками создаете все необходимые условия для запуска, поэтому надо подстраховаться↓
- Я категорически не рекомендую этот подход для запуска интерактивных приложений. Как правило, у них есть диалог Открыть / Сохранить как, откуда легко запускается командная строка, а дальше все что угодно. Запуск скрипта несет меньше риска.
- Скрипт для выполнения административной задачи должен находиться в расположении, на которое у пользователя нет прав на запись. Это может быть профиль администратора, системная папка или корень диска. В принципе, годится любое расположение при условии, что для скрипта установлен высокий уровень целостности.
- У пользователя не должно быть возможности изменять автономную систему. Это решается шифрованием диска, паролем на BIOS, запретом загрузки с внешних носителей, опечатыванием корпуса ПК и т.д.
Алгоритм решения
Задача решается в два хода с помощью планировщика заданий.
- Администратор создает в планировщике задание, которое запускается с полными правами при появлении в журнале заданного события и выполняет команду или скрипт.
- Пользователь выполняет команду, создающую событие в журнале. Для этого не нужны полные права.
В результате задание срабатывает по событию. Все счастливы!
Реализация решения
Плясать надо от события, с него и начну.
Шаг 1 — Создание события в журнале
Поскольку действие пользовательское, нужна максимально простая реализация.
Я выбираю ярлык на запуск команды – его можно запускать мышью и сочетанием клавиш.
Создать событие можно командлетом PowerShell Write-Eventlog, но проще задействовать встроенную утилиту eventcreate. Она создает в указанном журнале событие с нужным номером, источником и описанием.
Если источник новый, как в этом примере, сначала зарегистрируйте его в системе, однократно выполнив команду от имени администратора. Для пользователя создайте на рабочем столе новый ярлык и вставьте туда команду. Она создает в журнале «Приложения» информационное событие 777 от источника outsidethebox с описанием Think outside the box!
Шаг 2 — Создание задания в планировщике
Задание, выполняющееся по событию, легко создается в графическом интерфейсе планировщика (примеры создания из консоли ниже). Поэтому здесь я сфокусируюсь на нюансах, относящихся к моему решению.
Команда в задании
Я не могу знать, какую команду вы захотите выполнять по событию. Допустим, из корня системного диска выполняется скрипт PowerShell RunAsAdmin.ps1 (изменять его смогут только пользователи с полными правами).
В PowerShell от имени администратора выполните:
В запланированном задании на вкладке Действия укажите такие параметры:
- Команда/скрипт: powershell
- Аргументы: -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -file C:\RunAsAdmin.ps1
Учетная запись для запуска задания
В зависимости от ваших целей, вам нужно настроить запуск задания от имени администратора или системной учетной записи.
- На вкладке Общие установите переключатель Выполнять для всех пользователей.
- Для запуска от имени:
- администратора установите флажок Выполнять с наивысшими правами, затем нажмите ОК и введите пароль своего аккаунта.
- системы нажмите Изменить и введите SYSTEM или СИСТЕМА в зависимости от локализации, затем дважды нажмите OK.
Примеры скриптов PowerShell
Конечно, скрипт может выполнять по событию что угодно. Но поскольку статья в контексте устройств, я приведу конкретные примеры, чтобы придать решению законченный вид.
Управление состоянием устройства
Я уже показывал работу с модулем PNPDevice. Здесь я для разнообразия разберу отключение и включение камеры.
Выполнив Get-PNPDevice в PowerShell от имени администратора, вы увидите список всех устройств. Ориентируясь на их классы и имена, вы легко можете вывести ИД устройства и его статус.
У отключенного устройства будет статус Error . Теперь можно менять состояние устройства в зависимости от текущего статуса с помощью командлетов Enable-PNPDevice и Disable-PNPDevice. Если статус OK – выключаем, иначе – включаем.
Создание запланированного задания с триггером по событию
Пожалуй, самый простой способ — создать задание вручную, а для автоматизации — экспортировать его в XML и импортировать с schtasks или командлетом PowerShell Register-ScheduledTask.
Чтобы создать задачу из консоли, придется немного разобраться с синтаксисом XPath. Ниже пример команды schtasks, создающий в планировщике задание, которое будет выполняться от имени системы при появлении в журнале приложений события 777 от outsidethebox .
Что же касается PowerShell, я уже показывал создание запланированных заданий. С триггерами там все очень мутно, и создание триггера по событию требует отдельного разбора.
В случае с произвольными событиями и источниками, заменяйте источник и событие в моих примерах или действуйте так:
- Если вы используете свое событие, создайте хотя бы одно утилитой eventcreate и перезапустите eventvwr.msc.
- Перейдите в журнал, в котором создано событие, отфильтруйте его по источнику и событию (можете указать несколько источников/событий).
- В фильтре перейдите на вкладку XML и скопируйте запрос. Затем отредактируйте его, заменяя все одинарные кавычки на двойные (например, в названии провайдера).
- Подставьте исправленный запрос в переменную $trigger.Subscription (PowerShell) или в параметры /EC и /MO (schtasks) . Если при выполнении скрипта возникают ошибки триггера, попробуйте вытянуть запрос в одну строку, т.е. уберите переносы строк и лишние пробелы
Заключение
В блоге планировщик играет заметную роль почти в двух десятках статей! И в очередной раз с его помощью легко решается сложная на вид задача.
На мой взгляд, это – самый простой подход к решению в домашних условиях, но не единственный. Дома и в организации задачу можно решить на PowerShell, используя технологию Just Enough Administration (JEA). Ссылки для самостоятельного изучения:
А у вас возникала необходимость запускать что-либо от имени администратора, не имея полных прав? Напишите в комментариях, как вы решали такую задачу.
Вадим - владелец этого блога, и почти все записи здесь вышли из-под его пера. Подробности о блоге и авторе здесь. Поддержать автора вы можете тут.
Вас также может заинтересовать:
Подпишитесь на канал и читайте интересные записи чаще! Есть вопросы? Задайте их в чате.
комментарий 21
А зачем такие сложности? Nsudo и всё.
Ваша оценка: 0
У меня к вам встречные вопросы тогда.
1. Где вы увидели сложности? Там две команды по сути.
2. Как будете действовать в случае, если стороннее ПО запрещено?
3. Не заглядывая в документацию, сможете объяснить, как работает Nsudo и какие риски она создает? А заглядывая?
Ваша оценка: 0
Очень «скользкая тема». И хочется, и … потом разгребать, если накосячат? Надо очень и очень хорошо понимать и потом крепко подумать, что разрешить, а что нет. В домашних условиях и подавно.
В начале 90-х, во времена MS-DOS, некий Хижняк П,Л,, выпустил книжку «Пишем вирус и антивирус».
В предисловии было сказано- «Книга для ознакомления с методами программирования резидентов и т..п А не для того, чтобы научить писать компьютерные вирусы.»
Так вот. Потом Лозинский Д.Н., , автор Aidstest, который в то время был крупнейшим компьютерным «вирусологом», высказался в том духе, что — «За такие книжки, надо отрывать руки. Увидел бы — прибил» :-)
Почему? Очень просто. По стране пронёсся буквально шквал «вирусов с ошибками», потому что даже припечатывали исходник с опечатками. :-) Хорошо, что тогда из глобальных сетей были только FIDOnet и «зародышевый» Интернет. Не так сильно пострадали.
А книжка эта, до сих пор у меня на полке есть. Коллекционное, практически раритетное издание.
Ваша оценка: 0
Хорошо понимать, крепо подумать — это все общие слова. А конкретно что вы можете сказать по данному решению?
Я вот подумал и предложил ряд технических предосторожностей в предупредительных выстрелах. Соответственно, ожидаю предложений по улучшению и т.п.
Ваша оценка: 0
Зачастую, в случаях, когда некоторый «китайский» софт необоснованно запрашивает админские полномочия, помогает:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"
ну естественно в батник рядом с исп.файлом и ярлык на рабочий стол ведущий на батник.
Ваша оценка: 0
Это обратная задача — запуск с ограниченными правами, когда ПО хочет админские. Я разбирал это в 2012: Зачем программам нужны установщики
Ваша оценка: 0
Интересная концепция. При внешней простоте, просто в голову не приходила.
Но простота тут именно внешняя. В реализации это непросто. Или у нас разное понимание о простоте. Поясню. Да, сделать можно, как я когда-то сделал автоматизацию по изменению файла. Включить аудит, разобраться с его событиями, привязаться к нужному. Но когда появилась возможность вернуться к nnCron, где в роли события просто указываешь «изменение файла» и путь к нему, относительная оценка сложности встала на место. Просто забить гвоздь микроскопом, пока не познакомился с молотком.
Очень не хватает в виндовом планировщике концепции «Простое — просто, сложное — возможно». Нужно простое создания триггеров для других событий, отличных от времени. В нынешнем виде, инструмент для профессионала, а не конечного пользователя.
Ваша оценка: 0
В планировщике есть мастер создания простой задачи — там как раз есть по событию :) Я действительно не вижу тут ничего сложного. Проведите отсечку перед примерами скриптов — с этим в GUI справится любой человек, умеющий следовать простым инструкциям.
Автоматизация создания задачи добавляет более сложный слой — XPath, а триггеры в PowerShell — это вообще тяжелый случай :)
А так, планировщик и не предназначался для конечных пользователей, это административный инструмент, оснастка MMC же.
Ваша оценка: 0
Подразумевал user frendly события — Старт/завершение системы, логин/логофф, изменение каталога, создание/изменение файла, установка/разрыв сетевого соединения, изменение буфера обмена, создание/активация/удаление окна, запуск/завершение процесса.
Ваша оценка: 0
Понятно, но это не к планировщику претензия уже :) В ОС эти события отслеживаются, но получение возможно либо ценой массивного журналирования (аудит доступа к объектам), либо программными средствами (буфер обмена).
Ваша оценка: 0
Спасибо за статью, как раз искал что-то подобное, чтобы дать возможность скрипту, запускаемому пользователями без прав админа на терминальном сервере, читать список открытых файлов на сетевой шаре файлового сервера. Заодно теперь по журналу событий видно кто когда этот скрипт запускает:)
Ваша оценка: 0
Пожалуйста, рад что вы нашли применение ;)
Ваша оценка: 0
Вадим, отличная статья. Я прямо проникся :-) И решение не стандартное, никогда на слышал про такое.
Ваша оценка: 0
Сеошники в чате :) Кстати, с прошедшим ДР, Паша!
Ваша оценка: 0
Ваша оценка: 0
Nikolay Proskuryakov: Для бэкапа ЦС нужны права администратора, а выдавать их не хотелось.
Nikolay Proskuryakov: А на рабочий стол вывел ярлык для запуска задачи планировщика.
Николай, вы что-то путаете, похоже. Пользователю для запуска заданий планировщика нужны права администратора.
Ваша оценка: 0
Ваша оценка: 0
Владимир Педяш: Вроде бы всё так же, как и у вас.
Да неужели? У меня-то задача выполняется по событию, а пользователь просто пишет в журнал. О чем и статья, собственно :)
Ваша оценка: 0
Иванов Иван
добрый день. решил опробовать и на первом этапе споткнулся. Система не дает пользователю записать данные в журнал — ошибка «отказано в доступе». в Описании команды читаю «Позволяет . администратору. создать пользовательское событие в указанном журнале событий»…
Подскажете? Система windows 7
Ваша оценка: 0
Иванов Иван
так, вроде помог однократный запуск команды от имени администратора. Похоже, это связано с тем, что нужно зарегистрировать новый (неизвестный системе) источник. Дальше команда отрабатывает нормально без прав администратора
03.08.2020
itpro
Windows 10, Windows Server 2016
комментария 42
Любой пользователь Windows может запустить в своей сессии программы от имени другого пользователя (Run As). Благодаря этому можно выполнить скрипт (.bat, .cmd, .vbs, .ps1), исполняемый .exe файл или запустить установку приложения (.msi, .cab) с полномочиями другого, как правило привилегированного, пользователя .
Например, вы можете использовать RunAs для установки программ или запуска MMC оснасток с правами администратора непосредственно в сессии непривилегированного пользователя. Также возможность запуска программ “от имени” может быть полезна, когда приложение настроено под другим пользователем (и соответственно хранит свои настройки в чужом профиле, к которому у данного пользователя нет прав доступа), а его нужно запустить с теми же настройками в сессии другого пользователя.
За возможность запуска программ от имени другого пользователя в Windows отвечает служба Вторичный вход в систему (Secondary Log-on). Если эта служба остановлена все описанные методы runas работать не будут. ВЫ можете проверить, что служба запущена с помощью следующей команды PowerShell:
В Windows 10 есть несколько способов запустить программу или процесс от имени другого пользователя.
Запуск программы от имени другого пользователя из Проводника Windows (File Explorer)
Самый простой способ запустить программу из-под другого пользователя – воспользоваться графическим интерфейсом Проводника Windows (File Explorer). Просто найдите нужно приложение (или ярлык), зажмите клавишу Shift и щелкните по нему правой кнопкой мыши. Выберите пункт контекстного меню «Запуск от имени другого пользователя» (Run as different user).
Примечание. Если пункт меню «Запуск от имени другого пользователя» отсутствует, см. следующий раздел.
В появившемся окне нужно указать имя и пароль пользователя, под чьей учетной записью нужно запустить программу и нажать кнопку ОК.
Примечание. Если нужно указать доменного пользователя, используется один из следующий форматов имени: UserName@DomainName или DomainName\UserName .
Важно. Запуск программ от имени другого пользователя возможен, если для него задан пароль. Использовать Runas для пользователя с пустым паролем не получится.
Откройте Диспетчер задач и убедитесь, что приложение запущенно под указанным пользователем.
Включить пункт “Запуск от имени другого пользователя” в контекстном меню проводника Windows
Если в контекстном меню проводника Windows отсутствует пункт Запуск от имени другого пользователя (Run as different user), откройте редактор локальных групповых политик (gpedit.msc) и убедитесь, что в разделе Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Пользовательский интерфейс учетных данных (Computer Configuration -> Administrative Templates -> Windows Components -> Credential User Interface) отключена (Не задана) политика Запрашивать достоверный путь для входа в учетную запись (Require trusted path for credential entry)
Команда Runas – запуск программ от имени другого пользователя из командной строки
В Windows есть консольная утилита runas.exe, которая используется для запуска приложений от имени другого пользователя из командной строки. Также команда runas позволяет сохранить пароль пользователя в Windows Credential Manager, чтобы его не приходилось набирать каждый раз.
Откройте командную строку (или окно Выполнить, нажав сочетание клавиш Win+R). Для запуска Блокнота с правами учетной записи admininstrator выполните команду:
runas /user:administrator “C:\Windows\cmd.exe”
runas /user:”user test” notepad.exe
В отрывшемся окне появится приглашение «Введите пароль для admin», где нужно набрать пароль и нажать Enter.
Должно открыться ваше приложение. В моем случае это cmd. В заголовке окна указано Запущено от имени CompName\username :
Можно, например, открыть панель управления под другим пользователем:
runas /user:admin control
Для запуска программы из-под доменного пользователя нужно использовать формат имени UserName@DomainName или DomainName\UserName . Например, чтобы с помощью блокнота открыть текстовый файл от имени пользователя домена CORP, используйте команду:
runas /user:corp\server_admin “C:\Windows\notepad.exe C:\tmp\2871997x64.txt”
Иногда нужно запустить программу от имени доменного пользователя с компьютера, который не добавлен в домен AD. В этом случае нужно использовать такую команду (при условии, что в сетевых настройках вашего компьютера указан DNS сервер, который может отрезолвить этот домен):
runas /netonly /user:contoso\aaivanov cmd.exe
Если для запуска программы от другого пользователя не нужно загружать его профиль, используйте параметр /noprofile . При этом приложение запускается намного быстрее, но может вызвать некорректную работу программ, которые хранят данные в профиле пользователя.
Запуск программ от имени другого пользователя без ввода пароля
Вы можете сохранить пароль пользователя, который вы вводите. Для этого используется параметр /savecred.
runas /user:admin /savecred “C:\Windows\notepad.exe”
После указания пароля он сохранится в диспетчере паролей Windows.
При следующем запуске команды runas под этим же пользователем с ключом /savecred Windows автоматически получит сохраненный пароль из Credential Manager, а не будет запрашивать его повторно.
Чтобы вывести список всех пользователей, для которых сохранены пароли, используется команда:
Однако использование параметра /savecred не безопасно, т.к. пользователь, в чьем профиле сохранен чужой пароль может использовать его для запуска любой команды под данными привилегиями, или даже сменить чужой пароль. Кроме того, сохраненные пароли из Credential Manager можно легко украсть, поэтом лучше запретить использование сохраненных паролей (а тем более нельзя сохранять пароль привилегированной административной учетной записи).
Ярлык с запуском программы от имени другого пользователя
Можно создать на рабочем столе ярлык, позволяющий запустить программу от имени другого пользователя. Просто создайте новый ярлык, в окне с адресом объекта которого укажите команду runas с нужными параметрами.
При запуске такого ярлыка будет запрашиваться пароль пользователя.
Если дополнительно указать в ярлыке runas параметр /savecred , то пароль будет запрошен только один раз. После этого пароль будет сохранен в Credential Manager и автоматически подставляться при запуске ярлыка от имени другого пользователя без запроса пароля.
Такие ярлыки довольно часто используются для запуска программ, которые требуют прав администратора для запуска. Однако есть более безопасные способы запуска программы без прав администратора, или отключения запроса UAC для определенного приложения.
Запуск оснастки MMC консоли от имени другого пользователя
В некоторых случаях от имени другого пользователя нужно запустить одну из управляющих оснасток Windows. К примеру, если под другим пользователем нужно запустить оснастку Active Directory Users and Computers из набора инструментов администрирования RSAT, можно воспользоваться такой командой.
runas.exe /user:DOMAINname\USER “cmd /c start \”\” mmc %SystemRoot%\system32\dsa.msc”
Аналогичным образом можно запустить любую другую оснастку (главное знать ее имя).
Как добавить пункт “Запуск от имени” для программ в меню Пуск?
По-умолчанию в Windows 10 у элементов меню Пуск (начального экрана) отсутствует возможность запуска приложений от имени другого пользователя. Чтобы добавить в контекстное меню пункт “Запуск от имени другого пользователя”, нужно включить политику Показывать команду «Запуск от имени другого пользователя» при запуске (Show “Run as different user” command onStart) в разделе редактора групповых политик (консоль gpedit.msc) Конфигурация пользователя ->Административные шаблоны -> Меню Пуск и панель задач (User Configuration -> Administrative Templates -> Start Menu and Taskbar).
Либо, если редактор gpedit.msc отсутствует, создать в ветке реестра HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer ключ типа DWORD с именем ShowRunasDifferentuserinStart и значением 1.
New-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\CurrentVersion\Explorer" -Name ShowRunasDifferentuserinStart -Value 1 -PropertyType DWORD -Force
Осталось обновить групповые политики (gpupdate /force) и убедиться, что у программ в меню Пуск появится новое контекстное меню Дополнительно -> Запуск от имени другого пользователя.
Читайте также: