0

次のコードは、異なるユーザーで実行されているすべてのプロセス (例: notepad.exe) のプロセス ID を表示する際に問題なく機能します。しかし、現在のユーザーの下のプロセスだけが殺されています。異なるユーザーで実行されているすべてのプロセスを強制終了する必要があります。

#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);
}

プロセスが別のユーザーに属している場合でも、プロセスを強制終了するにはどうすればよいですか?

4

1 に答える 1