ホームページ >バックエンド開発 >C++ >C でプロセス ハンドルを名前で取得するにはどうすればよいですか?

C でプロセス ハンドルを名前で取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-23 00:38:11538ブラウズ

How to Get a Process Handle by Name in C  ?

C での名前によるプロセス ハンドルへのアクセス

C では、名前によるプロセス ハンドルの取得は、システム リソースを管理するための一般的なタスクです。これを実現する方法は次のとおりです。

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

注:

  • CreateToolhelp32Snapshot は、現在のシステム プロセスのスナップショットを作成します。
  • Process32FirstそしてProcess32Nextはプロセスを繰り返しますlist.
  • _strcmpi は、大文字と小文字を区別せずに文字列を比較します。
  • OpenProcess は、指定されたアクセス権でプロセス ハンドルを開きます。

十分な権限がない場合 (具体的には「デバッグ権限」)、EnableDebugPriv を使用してトークン権限を調整する必要がある場合があります。関数:

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

    ...

    // Adjust token privileges to enable debugging
}

以上がC でプロセス ハンドルを名前で取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。