Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mendapatkan Pengendalian Proses mengikut Nama dalam C?

Bagaimana untuk Mendapatkan Pengendalian Proses mengikut Nama dalam C?

Barbara Streisand
Barbara Streisandasal
2024-11-23 00:38:11459semak imbas

How to Get a Process Handle by Name in C  ?

Mengakses Pengendalian Proses mengikut Nama dalam C

Dalam C , mendapatkan semula pengendalian proses dengan namanya ialah tugas biasa untuk mengurus sumber sistem. Begini cara anda boleh mencapai ini:

#include <windows.h>
#include <tlhelp32.h>

int main(int argc, char *argv[])
{
    PROCESSENTRY32 entry;
    entry.dwSize = sizeof(PROCESSENTRY32);

    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (Process32First(snapshot, &entry) == TRUE)
    {
        while (Process32Next(snapshot, &entry) == TRUE)
        {
            if (_strcmpi(entry.szExeFile, "target.exe") == 0)
            {
                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);

                // Perform desired operations here...

                CloseHandle(hProcess);
            }
        }
    }

    CloseHandle(snapshot);

    return 0;
}

Nota:

  • CreateToolhelp32Snapshot mencipta syot kilat proses sistem semasa.
  • Process32First dan Process32Next berulang melalui proses list.
  • _strcmpi membandingkan rentetan secara tidak sensitif huruf.
  • OpenProcess membuka pemegang proses dengan hak akses yang ditentukan.

Jika anda tidak mempunyai keistimewaan yang mencukupi ( khususnya, "Keistimewaan Nyahpepijat"), anda mungkin perlu melaraskan keistimewaan token menggunakan Fungsi EnableDebugPriv:

void EnableDebugPriv()
{
    HANDLE hToken;
    LUID luid;
    TOKEN_PRIVILEGES tkp;

    ...

    // Adjust token privileges to enable debugging
}

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Pengendalian Proses mengikut Nama dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn