Я хочу перехватить заданную программу, прежде чем она запустится, и сначала запустить собственную программу

3

Я собираюсь поработать с Python 3, в первую очередь интересуюсь Windows. Если это имеет значение, то Windows 10 специально.

Пример того, что я хочу, чтобы произошло:

  1. Пользователь запускает мой скрипт.
  2. Пользователь решает занести в черный список игру Dota 2.
  3. Пользователь пытается открыть Dota 2.
  4. Поскольку Dota 2 находится в черном списке, мой скрипт запускается вместо Dota 2
  5. После того, как мой скрипт готов, Dota 2 либо запускается, либо не запускается, в зависимости от того, что выбрал мой скрипт Это в конечном итоге будет контролироваться пользователем.
  6. Пользователь закрывает мой скрипт.
  7. Пользователь пытается открыть Dota 2.
  8. Dota 2 открывается сразу же без перерывов.

Последние три строки означают, что должен быть способ включать и выключать его, а не постоянное решение. Мое базовое предположение состоит в том, что, как только я знаю, как сделать первую часть, вторая часть будет легкой. Я все еще положил это туда для разъяснения.

Я действительно просто хочу знать, как получить доступ к перехвату программ.

GoodDay
источник

Ответы:

3
  1. Пользователь пытается открыть Dota 2.
  2. Поскольку Dota 2 находится в черном списке, мой сценарий запускается вместо Dota 2.

Окна Параметры выполнения файла изображения позволяет вам запускать вашу программу всякий раз, когда запускается исполняемый файл по вашему выбору.

Предположим, мы хотим запустить C:\My Folder\new app.exe всякий раз, когда пользователь пытается начать C:\Windows\old app.exe, Для этого выполните следующую команду:

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\old app.exe" /v Debugger /d "C:\My Folder\new app.exe" /f

Замечания: Если ключ с именем old app.exe не существует (скорее всего), эта команда создаст его.

Это создает новый ключ реестра с именем программы, которая будет «угнана», и создает новое строковое значение с именем дебаггер это имеет свои данные, установленные к пути исполняемого файла замены. Это может быть любой исполняемый файл, в том числе .CMD Пакетные скрипты.

Изменение вступает в силу немедленно. Теперь всякий раз, когда исполняемый файл с именем old app.exe запущен, Windows запустится C:\My Folder\new app.exe вместо.

Чтобы вернуть все в нормальное состояние, удалите old app.exe ключ:

reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\old app.exe" /f

Просто включите эти команды в ваш скрипт, чтобы достичь желаемого результата.

Twisty Impersonator
источник
Просто быстрый вопрос (а), что если приложение, которое мы хотим запустить, не находится в C: \ Windows? Что если он находится на другом жестком диске или в другой папке C? Это также работает для вещей, которые на самом деле не являются приложениями, например, для файлов?
GoodDay
@GoodDay Вы можете указать это в любом месте, которое вы хотите, при условии, что оно доступно для всех пользователей, которые будут его запускать. Вы должны указать на то, что является исполняемым. Если сомневаетесь, просто проведите быстрый тест с нужным файлом. Поскольку изменения вступают в силу немедленно, легко проверить ваши настройки.
Twisty Impersonator
Извини, я не понимаю, ты написал: C:\Windows\old app.exe, это указывает на то, что мы работаем в `C: \ Windows` как минимум. И когда я зашел в регидит, чтобы проверить, может быть, я что-то упустил, но я не могу найти все, что ищу.
GoodDay
Ну, конечно, это был пример. Вы можете установить данные для дебаггер значение для C:\My Folder\MyScript.cmd если ты хотел и это сработает. Это помогает?
Twisty Impersonator
Хорошо, давайте сделаем пример, я думаю, что для меня тогда будет понятно: допустим, приложение, которое я хочу перехватить, находится в K: \ Programs \ test \ old_app.exe, тогда что мне делать?
GoodDay