Система запуска от имени
Тесты, выполняемые от имени «Локальная система», не должны создавать пользовательские интерфейсы. Если тесты необходимо создать или взаимодействовать с пользовательским интерфейсом, необходимо переместить код, связанный с пользовательским интерфейсом, в отдельные исполняемые файлы, которые запускаются на рабочем столе из тестов с помощью функции CreateProcessAsUser.
Указание запуска от имени в командной строке
te unittests\* /runas:system
Маркировка тестов с помощью запуска от имени
Метаданные теста можно использовать для указания типа запуска сборки, класса или метода теста.
Значения запуска от имени, указанные в метаданных, переопределяют значения запуска от имени, указанные в командной строке. Например, тест, помеченный метаданными теста runas:system, по-прежнему будет выполняться как Локальная система, даже если в командной строке указан параметр /runas:elevated .
Пример (машинный код)
class MyTests < TEST_CLASS(MyTests); BEGIN_TEST_METHOD(SystemTest) TEST_METHOD_PROPERTY(L"RunAs", L"System") END_TEST_METHOD() >;
Запуск командной строки/ программы от имени SYSTEM в Windows

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

Запуск программ от имени системы с помощью 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 попросит вас принять лицензионное соглашение.

После выполнения команды появится новое окно с командной строкой, запущенной из-под учетной записи 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 отлично справляется с задачей.
Предыдущая статья Следующая статья
Как запустить программу от имени системы
В операционных системах 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.

Как видите, запустить любую программу с правами системы не просто, а очень просто. Но не стоит лезть во внутренности операционной системы без крайней необходимости, поскольку в результате подобного вмешательства есть шанс ее поломать. Ну и конечно, желательно делать резервные копии. На всякий случай
Eugeneer’s Media Cloud World
Creative IT Practitioner’s blog — take your thought and give it idea acceleration! In my focus: networks, security, virtualization, multimedia, AI.
Главная
А А Saturday 16 January 2016
Запуск программ от имени SYSTEM в MS Windows.
Всем привет.
Периодически у меня возникает необходимость запуска программ от имени системы (SYSTEM или Local System). Обычно это необходимо для целей тестирования или отладки работы различных программ и скриптов, которые в дальнейшем будут запускаться планировщиком. Тестировать работоспособность подобных программ не всегда правильно из-под учетной записи Администратора.
Точно такая же необходимость возникает когда некий процесс работающий от имени SYSTEM подгружает саму систему и другие задачи не могут из-за него работать. Недавний случай с серверным антивирусом который ночью пошел на апдейт, но так и не смог обновиться. В результате зависшый процесс занял весь процессорный ресурс под 99% и никак не давался мне для завершения по taskkill. Потому как выполнялся от SYSTEM. Пришлось воспользоваться методом описанным ниже.
Запуск программ от имени SYSTEM в Windows XP.
Как же можно запустить программу или же интерактивную командную строку (cmd) с правами администратора? В Windows XP или Windows Server 2003 это можно сделать очень просто. Достаточно было зайти в систему с правами администратора, открыть командную строку и набрать в ней:
at 12:13 /interactive cmd.exe
, где12:13 – ваше текущее время + одна минута (в 24 часовом формате).
Помните что в для этого должна быть запущена служба «Планировщик заданий». После наступления указанного времени перед вами появится черное окно командной строки, запущенное с правами Local System. Стоит отметить, что если вы выполняете этот трюк через терминальное подключение к Windows Server 2003, то окно командной строки запуститься в консольной сессии.
Запуск программ от имени SYSTEM в Windows 7.
В Windows 7 ситуация несколько изменилась и показанный выше трюк не работает. Это хорошо с точки зрения безопасности, но крайне неудобно мне как администратору. К счастью, у меня получилось найти альтернативный вариант запуска интерактивной командной строки с правами системы в Windows 7. Трюк заключается в использовании знакомой нам утилиты от SysInternals под названием PSexec.exe. Скачайте ее на свой компьютер.
Откройте командную строку с правами администратора (“Run as administrator”) перейдите в каталог, в котором находится исполняемый файл PSexec.exe и наберите:
psexec -i -s cmd.exe
параметр -i означает интерактивный запуск, -s запуск из-под системы
После выполнения команды появится новое окно с командной строкой, запущенной из под учетной записи NT Authority\System.
Точно также можно запустить любую программу или скрипт с правами системы, достаточно в параметре утилиты Psexec изменить cmd.exe на имя вашей программы.
Оригинал материала http://winitpro.ru/index.php/2011/12/26/zapusk-cmd-ot-system-v-windows-7/
Posted by Nyukers в 05:00
2 comments:
Anonymous said.
Буквально вчера пришлось выполнять такой трюк с 107-м патчем медка. Разрабы сильно перевозбудились на 8-е марта, и забыли затушить один процесс.))
Anonymous said.
1)В ком строке пишем at 15:26 /interactive cmd.exe
где 15:26 на одну минуту больше текущего времени
2)получаем окно от юзера SYSTEM в котором пишем taskmgr.
Все! Имеем диспетчер задач которым можно убить любой процесс!
Post a Comment
А что вы думаете по этому поводу?