Я в настоящее время пишу очень легкую программу, таким образом, я должен использовать C++, так как он не связывается с платформой.NET, которая решительно увеличивает размер программы.
Я должен быть в состоянии завершить процесс, и сделать это я должен получить дескриптор процесса. Unfortuanately, который я не изобразил, как сделать это все же.
P.S. Я знаю, что для уничтожения процесса необходимо использовать TerminateProcess.
PID, необходимый для OpenProcess (), обычно нелегко получить. Если все, что у вас есть, это имя процесса, вам нужно перебрать запущенные процессы на машине. Сделайте это с помощью CreateToolhelp32Snapshot, затем Process32First и выполните цикл с Process32Next. PROCESSENTRY32.szExeFile дает вам имя процесса (не путь!), Th32ProcessID дает вам PID.
Следующее соображение заключается в том, что процесс может появляться более одного раза. И есть вероятность, что одно и то же имя процесса используется для очень разных программ. Вроде «Настройка». Если вы не хотите просто убить их всех, вам нужно попытаться получить от них некоторую информацию о времени выполнения. Возможно, текст строки заголовка окна. GetProcessImageFileName () может указать путь к .exe. Он использует собственный формат ядра, вы Мне потребуется QueryDosDevice для сопоставления имени дискового устройства с буквой диска.
Следующее соображение - это права, которые вы запрашиваете в OpenProcess (). Вы вряд ли получите PROCESS_ALL_ACCESS
, все, что вам нужно, это PROCESS_TERMINATE
. Хотя это тоже привилегия. Убедитесь, что учетная запись, которую вы используете для запуска программы, может получить это право.
HANDLE explorer;
explorer = OpenProcess(PROCESS_ALL_ACCESS,false,2120);
TerminateProcess(explorer,1);
That worked
CreateProcess
и OpenProcess
возвращают дескрипторы процесса.
Вот пример кода , чтобы найти процесс, попросив систему перечислить все процессы, а затем выполните поиск в списке нужного процесса.
Чтобы получить дескриптор для перехода к TerminateProcess , используйте OpenProcess в сочетании с какой-либо другой функцией, например EnumProcesses .
]