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

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

Дисклаймер . Внесение изменение в образ Windows от имени системы – это нештатная операция. Имейте в виду, что некорректные действия с правами NT AUTHORITYSYSTEM могут сломать вашу Windows. На практике запуск процессов от имени системы используется довольно редко, т.к. в большинстве случаев можно решить проблему более штатными методами: runas , запуск программ без прав админа и подавлением запроса UAC , назначение администратора владельцем файлов/веток реестра, отключение UAC для определенной программы , назначением прав пользователям на службу .

Встроенная учетная запись SYSTEM используется диспетчером управления службами SCM ( Service Control Manager ) для запуска и управления системными службами. Из-под учетной записи System (может называться NT AUTHORITYSYSTEM, Local System или ComputerLocalSystem)запускается большинство системных служб и процессов (в том числе ядро NT Kernel ). Откройте оснастку управления службами services.msc и обратите внимание на службы, у который в столбце LogOnAs указано Local System. Эти службы запушены из-под учетной записи SYSTEM. системные службы windows запущены от имени localsystem

Запуск командной строки от 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

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

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

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

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

Начиная с Windows 7 трюк с запуском интерактивной командной строки от имени системы через планировщик не работает. Для запуска команд от имени NT Authority System можно использовать утилиту PSExec.exe от Sysinternals.

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

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

psexec -i -s cmd.exe

параметр -i запускает приложение в интерактивном режиме (пользователь может взаимодействовать с программой на рабочем столе, если это параметр не указывать, процесс запускается в консольной сесии), — s означает что командную строку нужно запустить из-под системы

При первом запуске PsExec попросит вас принять лицензионное соглашение.

запуск интерактивной cmd.exe из psexec с правами system

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

whoami

psexec whoami проверка что командная строка запущена от имени NT AuthoritySystem

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

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

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

psexec -s \msk-PCBuh2 cmd.exe

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

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

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

EnglishRussianUkrainian