Работа в фоновом режиме от имени Системы, TrustedInstaller или Local Service — не единственное отличие процессов системных служб от процессов прикладных приложений. Все ключевые системные процессы запускаются в рамках изолированного сеанса с идентификатором 0, тогда как для вошедших в систему пользователей Windows открывает отдельный сеанс с идентификаторами 1, 2, 3 и так далее в зависимости от того, сколько всего пользователей работает в системе.
Вы можете убедиться в этом сами, выполнив в запущенной от имени администратора PowerShell команду get-process -name имя-процесса. Обратите внимание на данные столбца SI: если вы видите в нем 0, значит процесс работает в привилегированном изолированном сеансе, тогда как 1 указывает на то, что процесс запущен в рамках сеанса пользовательского.
Для чего нужно такое разделение догадаться несложно.
Оно необходимо, чтобы процессы более «низкого» порядка не могли получить непосредственный доступ к критически важным процессам системы. Эту особенность Windows можно использовать для запуска прикладных программ в скрытом режиме без назначения их процессов службами, как в примере работы с инструментом Non-Sucking Service Manager, который был рассмотрен нами в статье «Как в Windows 10 создать собственную системную службу».
Есть и более простые решения.
Утилита PsExec
Воспользуйтесь бесплатной тулзой PsExec, созданной Марком Руссиновичем.
Скачайте архив с утилитами со странички docs.microsoft.com/ru-ru/sysinternals/downloads/psexec, распакуйте его и скопируйте исполняемый файл psexec.exe в системную папку System32.
Запустите от имени администратора PowerShell и выполните команду вида .\psexec -i 0 -d путь-к-программе.
Например, командой .\psexec -i 0 -d notepad можно запустить в скрытом режиме Блокнот.
В результате текстовый редактор будет запущен в скрытом режиме в рамках сеанса с идентификатором 0, но от имени пользователя.
Планировщик заданий
Получить те же результаты можно средствами штатного Планировщика заданий.
Создайте новую задачу, на вкладке «Действие» укажите путь к запускаемой программе, а на вкладке «Общие» активируйте радиокнопку «Выполнять для всех пользователей». Это всё.
Сохраните задачу и запустите ее из главного окна Планировщика.
Программа или скрипт запустятся и продолжат работу в скрытом режиме и в том же сеансе, в котором работают системные службы.
Добавить комментарий