Для управления некоторыми системными файлами, ветками реестра, процессам и службам в Windows может оказаться недостаточно прав локального администратора. В таких случаях администратору приходится назначать себя владельцем таких объектов или выполнять действия от имени привилегированного аккаунта SYSTEM (Local System). В этой статье мы рассмотрим, как в Windows открыть командную строку или запустить любую программу от имени SYSTEM.
Встроенная учетная запись SYSTEM используется диспетчером управления службами SCM (Service Control Manager) для запуска и управления системными службами. Из-под учетной записи System (может называться NT AUTHORITYSYSTEM, Local System или ComputerLocalSystem)запускается большинство системных служб и процессов (в том числе ядро NT Kernel). Откройте оснастку управления службами services.msc и обратите внимание на службы, у который в столбце LogOnAs указано Local System. Эти службы запушены из-под учетной записи SYSTEM.
Запуск программ от имени системы с помощью PSExec
Самый простой способ запустить команду или программу от имени NT AuthoritySystem — воспользоваться консольной утилитой PSExec.exe от Sysinternals.
Утилита PSExec не требует установки. Просто распакуйте скачанный архив Pstools.zip на диск (скорее всего перед использованием потребуется разблокировать скачанный из Интернета файл).

Откройте командную строку (CMD) с правами администратора (“Run as administrator”) перейдите в каталог, в котором находится исполняемый файл PSexec.exe:
cd C:ToolsPSTools
Чтобы запустить программу или команду от имени SYSTEM, выполните:
psexec -i -s cmd.exe
При запуске команды из оболочки PowerShell, строка запуска будет выглядеть так:
.psexec.exe -i -s <executable>
- -i — запустить указанное приложение в интерактивном режиме (пользователь может взаимодействовать с программой на рабочем столе). Если это параметр не указывать, процесс запускается в консольной сессии.
- -s – запустить процесс от имени аккаунта Local System
- cmd.exe – имя исполняемого EXE файла, скрипта или команды, которую нужно запустить от имени SYSTEM .

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

Так как в этом примере мы запустили интерактивную консоль интерпретатора командной строки cmd.exe, то все последующие команды или программы, которые буду запущены из этой сессии, также будут выполняться от имени SYSTEM.
Теперь вы сможете изменить, переименовать или удалить системные файлы/ветки реестра, владельцем которых является TrustedInstaller или SYSTEM. .Например, можно остановить системную службу, или закрыть дескриптор занятого системой файла.
psexec -s \msk-PCBuh2 cmd.exe
При появлении ошибки couldn’t install PSEXESVC service , убедитесь, что:
- командная строка запущена от имени администратора;
- проверьте, возможно служба PSEXESVC уже запущена.

Есть еще ряд сторонних утилит для запуска программ от имени System (AdvancedRun , RunAsSystem, PowerRun), но я не вижу смысла использовать их смысла. Т.к. во-первых это сторонние утилиты, и вы не можете гарантировать что в их коде нет вредоносных закладок, и, во-вторых, официальная утилита PsExec от Microsoft отлично справляется с задачей.
Используем планировщик Windows для запуска команды/скрипта от имени SYSTEM
Для периодического выполнения определенных скриптов или команду от имени системы можно использовать планировщик задач Windows. К примеру, при загрузке Windows я хочу запускать определенный PowerShell скрипт с правами системы.
- Откройте консоль Task Scheduler, выполнив команду
taskschd.msc - Создайте новое задание RunPSscriptAsSYSTEM
- В поле User нажмите кнопку Change User or Group и укажите SYSTEM (аккаунт, используемый для запуска изменится на NT AUTHORITYSYSTEM)
- Включите опцию Run with highest privileges

- Перейдите на вкладку Triggers и выберите, когда нужно запускать ваш скрипт (в этом примере задание будет запускать при загрузке Windows – At startup

- На вкладке Actions нужно указать, какую программу вы хотите запустить
- В нашем примере мы будем запускать PowerShell скрипт. Для этого в поле Program/script укажем:
powershell.exe, а в поле аргументов — путь к файлу скрипта: —ExecutionPolicy Bypass -NonInteractive -File "C:PSSampleScript.ps1"
Подробнее о запуске PowerShell скриптов из планировщика задач. - Сохраните настройки задания
- Чтобы активировать задание, щелкните по нему ПКМ вы выберите Enable.

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

at 12:23 /interactive cmd.exe
, где 12:23 – текущее время + одна минута (в 24 часовом формате).
После наступления указанного времени в консольной сессии откроется окно командной строки, запущенное с правами Local System.
В Windows 10 и 11 запуск интерактивной строки с помощью команды at не поддерживается..
Команда AT признана нерекомендуемой. Используйте вместо нее schtasks.exe. Внимание! В соответствии с повышенной безопасностью данное задание будет выполняться в запланированное время, но не интерактивно. Если требуется интерактивное задание, воспользуйтесь служебной программой schtasks.exe (для получения дополнительных сведений введите schtasks /?). Такой запрос не поддерживается.



Добавить комментарий