Следующий код отлично работает при отображении идентификатора процесса всех процессов (например: notepad.exe), работающих под разными пользователями. Но процесс под нынешним пользователем убит только один. Мне нужно убить все процессы, запущенные под разными пользователями.Как убить Процессы, выполняемые под разными пользователями, используя код C++
#define SAMPLEAPP "notepad.exe"
void main()
{
KillProcessByName(SAMPLEAPP);
system("pause");
}
void KillProcessByName(const char *filename)
{
// Taking snapshot of all processes
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
//structure to capture each entry in snapshot
PROCESSENTRY32 pEntry;
pEntry.dwSize = sizeof (pEntry);
//capture the first process in the list
BOOL hRes = Process32First(hSnapShot, &pEntry);
while (hRes)
{
char tempProcess[PROCESS_SIZE];// = pEntry.szExeFile;
wcstombs(tempProcess, pEntry.szExeFile, PROCESS_SIZE);
//if process name is equal to the process passed as argument to be killed
if (strcmp(tempProcess, filename) == 0)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0,
(DWORD) pEntry.th32ProcessID);
std::cout << "Process ID of the Process " << tempProcess << " is : " << pEntry.th32ProcessID;
if (hProcess != NULL)
{
// Kill the process
TerminateProcess(hProcess, 9);
CloseHandle(hProcess);
}
}
//Capture the next process in process snapshot
hRes = Process32Next(hSnapShot, &pEntry);
}
CloseHandle(hSnapShot);
}
Как я могу убить процесс, даже если он принадлежит другому пользователю?
Я также пробовал «Запуск от имени администратора». Даже тогда Процессы под другими пользователями не будут убиты. – user2745219
Может ли пользовательская учетная запись использовать эти процессы с помощью диспетчера задач? –
Да. Из диспетчера задач я могу завершить процессы других пользователей с параметром «Окончательный процесс». – user2745219