Запустить командную строку (программу) от имени SYSTEM в Windows

Для управления некоторыми системными файлами, ветками реестра, процессам и службам в Windows может оказаться недостаточно прав локального администратора. В таких случаях администратору приходится назначать себя владельцем таких объектов или выполнять действия от имени привилегированного аккаунта SYSTEM (Local System). В этой статье мы рассмотрим, как в Windows открыть командную строку или запустить любую программу от имени SYSTEM.

Дисклаймер. Возможность запуска программ/команд от имени 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.системные службы windows запущены от имени localsystem

Запуск программ от имени системы с помощью PSExec

Самый простой способ запустить команду или программу от имени NT Authority\System — воспользоваться консольной утилитой PSExec.exe от Sysinternals.

Утилита PSExec.exe входит в состав набора утилит администрирования PSTools и доступна для загрузки сайте Microsoft https://docs.microsoft.com/en-us/sysinternals/downloads/psexec. Утилита PSExec знакома любому администратору и используется для запуска команд и программ на удаленных компьютерах. Так же в PSexec есть полезная возможность запуска процессов от имени System. Некоторые антивирусы могут опознавать PSExec.exe как потенциально небезопасную программу (с помощью psexec кстати распространялся печально известный вирус notpetya).

Утилита PSExec не требует установки. Просто распакуйте скачанный архив Pstools.zip на диск (скорее всего перед использованием потребуется разблокировать скачанный из Интернета файл).

Разблокировать psexec

Откройте командную строку (CMD) с правами администратора (“Run as administrator”) перейдите в каталог, в котором находится исполняемый файл PSexec.exe:

cd C:\Tools\PSTools\

Чтобы запустить программу или команду от имени SYSTEM, выполните:

psexec -i -s cmd.exe

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

.\psexec.exe -i -s <executable>

  • -i — запустить указанное приложение в интерактивном режиме (пользователь может взаимодействовать с программой на рабочем столе). Если это параметр не указывать, процесс запускается в консольной сессии.
  • -s – запустить процесс от имени аккаунта Local System
  • cmd.exe – имя исполняемого EXE файла, скрипта или команды, которую нужно запустить от имени SYSTEM .
При первом запуске PsExec попросит вас принять лицензионное соглашение. запуск интерактивной cmd.exe из psexec с правами system

После выполнения команды появится новое окно с командной строкой, запущенной из-под учетной записи NT Authority\System. Проверьте это, выполнив команду:

whoami

psexec: запуск командной строки от имени system

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

Чтобы запустить другую программу, команду или скрипт с повышенными привилегиями LocalSystem, достаточно в аргументах утилиты PsExec изменить cmd.exe на полный путь к исполняемому файлу нужной программы (если путь содержит пробелы, возьмите его в кавычки).

Теперь вы сможете изменить, переименовать или удалить системные файлы/ветки реестра, владельцем которых является TrustedInstaller или SYSTEM. .Например, можно остановить системную службу, или закрыть дескриптор занятого системой файла.

С помощью PSExec вы можете получить интерактивную командную с правами NT AUTORITY\СИСТЕМА с удаленного компьютера. Для этого используется команда:

psexec -s \\msk-PCBuh2 cmd.exe

При появлении ошибки couldn’t install PSEXESVC service , убедитесь, что:

  • командная строка запущена от имени администратора;
  • проверьте, возможно служба PSEXESVC уже запущена.служба PSEXESVC уже запущена

Есть еще ряд сторонних утилит для запуска программ от имени System (AdvancedRun , RunAsSystem, PowerRun), но я не вижу смысла использовать их смысла. Т.к. во-первых это сторонние утилиты, и вы не можете гарантировать что в их коде нет вредоносных закладок, и, во-вторых, официальная утилита PsExec от Microsoft отлично справляется с задачей.

Используем планировщик Windows для запуска команды/скрипта от имени SYSTEM

Для периодического выполнения определенных скриптов или команду от имени системы можно использовать планировщик задач Windows. К примеру, при загрузке Windows я хочу запускать определенный PowerShell скрипт с правами системы.

  1. Откройте консоль Task Scheduler, выполнив команду taskschd.msc
  2. Создайте новое задание RunPSscriptAsSYSTEM
  3. В поле User нажмите кнопку Change User or Group и укажите SYSTEM (аккаунт, используемый для запуска изменится на NT AUTHORITY\SYSTEM)
  4. Включите опцию Run with highest privilegesЗапуск задания планировщика с правами SYSTEM
  5. Перейдите на вкладку Triggers и выберите, когда нужно запускать ваш скрипт (в этом примере задание будет запускать при загрузке Windows – At startupТриггер в диспетчере заданий
  6. На вкладке Actions нужно указать, какую программу вы хотите запустить
  7. В нашем примере мы будем запускать PowerShell скрипт. Для этого в поле Program/script укажем: powershell.exe , а в поле аргументов — путь к файлу скрипта: — ExecutionPolicy Bypass -NonInteractive -File "C:\PS\SampleScript.ps1" Запуск powershell скрипта с правами system
  8. Сохраните настройки задания
  9. Чтобы активировать задание, щелкните по нему ПКМ вы выберите Enable.Включить задание планировщика

Теперь планировщик заданий будет запускать указанный PowerShell скрипт с правами SYSTEM при каждой загрузке Windows.

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

Если программу/команду от имени SYSTEM нужно запустить разово, можно в настройках планировщика не создавать триггер на запуск по расписанию, а запустить задание планировщика вручную, выбрав его в консоли и щелкнув Run.

ручной запуск задания планировщика as system

В старых версиях Windows XP и Windows Server 2003 с помощью планировщика можно было запланировать открытие интерактивной командной строки с правами администратора.

at 12:23 /interactive cmd.exe

, где 12:23 – текущее время + одна минута (в 24 часовом формате).

После наступления указанного времени в консольной сессии откроется окно командной строки, запущенное с правами Local System.

Запуск пограмм от имени системы в Windows

В Windows 10 и 11 запуск интерактивной строки с помощью команды at не поддерживается..

Команда AT признана нерекомендуемой. Используйте вместо нее schtasks.exe.
Внимание! В соответствии с повышенной безопасностью данное задание будет  выполняться в запланированное время, но не интерактивно. Если требуется интерактивное задание, воспользуйтесь служебной программой schtasks.exe (для получения дополнительных сведений введите schtasks /?). Такой запрос не поддерживается.

windows 10 команда at устарела и не поддерживается

 


Предыдущая статья Следующая статья


Комментариев: 11 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)