Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Pemilik Proses C# Menggunakan ID atau Namanya?

Bagaimanakah Saya Boleh Menentukan Pemilik Proses C# Menggunakan ID atau Namanya?

Barbara Streisand
Barbara Streisandasal
2025-01-17 11:32:10234semak imbas

How Can I Determine the Owner of a C# Process Using its ID or Name?

Menentukan Pemilikan Proses dalam C#

Mendapatkan pemilik proses ialah tugas penting semasa mengurus sumber sistem. Dalam konteks ini, anda sedang mencari cara untuk mengenal pasti pemilik proses bernama "MyApp.exe," walaupun selepas mendapatkan semula senarai proses.

Walaupun kelas Proses menyediakan maklumat proses asas, ia tidak mempunyai keupayaan untuk menentukan pemilikan. Untuk menangani cabaran ini, Instrumen Pengurusan Windows (WMI) boleh digunakan. Dengan menambahkan rujukan kepada System.Management.dll, anda boleh mendapatkan pengguna yang dikaitkan dengan proses.

Kaedah 1: Mengikut ID Proses

public string GetProcessOwner(int processId)
{
    string query = "Select * From Win32_Process Where ProcessID = " + processId;
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    ManagementObjectCollection processList = searcher.Get();

    foreach (ManagementObject obj in processList)
    {
        string[] argList = new string[] { string.Empty, string.Empty };
        int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
        if (returnVal == 0)
        {
            // return DOMAIN\user
            return argList[1] + "\" + argList[0];
        }
    }

    return "NO OWNER";
}

Kaedah 2: Mengikut Nama Proses

public string GetProcessOwner(string processName)
{
    string query = "Select * from Win32_Process Where Name = \"" + processName + "\"";
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    ManagementObjectCollection processList = searcher.Get();

    foreach (ManagementObject obj in processList)
    {
        string[] argList = new string[] { string.Empty, string.Empty };
        int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
        if (returnVal == 0)
        {
            // return DOMAIN\user
            string owner = argList[1] + "\" + argList[0];
            return owner;       
        }
    }

    return "NO OWNER";
}

Dengan menggunakan berasaskan WMI ini kaedah, anda boleh menentukan pemilik proses dengan berkesan menggunakan sama ada ID atau nama prosesnya. Maklumat ini boleh menjadi tidak ternilai untuk menganalisis proses sistem dan menyesuaikan aplikasi anda dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Pemilik Proses C# Menggunakan ID atau Namanya?. 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