Вы не можете "убить файл, только заглянув внутрь версии". Вы можете убить процесс, если у вас есть ручка для него. Существует два распространенных способа получить дескриптор процесса:
- Используйте дескриптор, который вы получили, когда начали процесс с
CreateProcess
.
- Получить дескриптор уже запущенного процесса с помощью
OpenProcess
.
Полагаю, вы не начали процесс самостоятельно, поэтому вам нужно будет использовать OpenProcess
.
Тогда проблема переходит к выбору, какой процесс попытаться открыть. OpenProcess
требуется идентификатор процесса, и есть несколько способов получить один из них, в зависимости от того, какая другая информация у вас уже есть о процессе.
Если вас беспокоит номер версии EXE-файла, рассмотрите возможность использования второго метода, но прежде чем выбрать процесс, откройте EXE-файл и проверьте его содержимое. Это довольно отличная задача от уничтожения процесса, поэтому, если у вас возникли проблемы с ним, вы должны задать об этом отдельный вопрос.
Получив дескриптор процесса, который вас интересует, вы можете убить его с помощью TerminateProcess
. Пожалуйста, обратите внимание на предупреждения в документации для этой функции; это не чистое отключение процесса на любом отрезке.
Наконец, будьте осторожны, чтобы увидеть разницу между дескрипторами окна и дескрипторами процесса. Они не являются взаимозаменяемыми. Используйте тип HWnd
, когда вы хотите держать дескриптор окна; THandle
для ручек процесса.