Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menentukan Pemilikan Proses dalam C# Menggunakan WMI?

Bagaimana untuk Menentukan Pemilikan Proses dalam C# Menggunakan WMI?

Patricia Arquette
Patricia Arquetteasal
2025-01-17 11:41:09237semak imbas

How to Determine Process Ownership in C# Using WMI?

Menggunakan WMI untuk Mengenalpasti Pemilik Proses dalam Aplikasi C#

Menentukan pemilikan proses dengan cekap adalah penting untuk pelbagai aplikasi C#, terutamanya yang tertumpu pada pengurusan sumber sistem dan keselamatan. Panduan ini menunjukkan cara untuk mencapainya menggunakan pustaka Instrumentasi Pengurusan Windows (WMI).

Memanfaatkan WMI untuk Pemilikan Proses

WMI menawarkan alat yang mantap untuk mengurus dan memantau komponen sistem, termasuk proses. Begini cara menggunakan WMI untuk mengenal pasti pemilik proses:

1. Menambah Rujukan System.Management.dll

Dalam Visual Studio, navigasi ke Rujukan projek anda dalam Solution Explorer. Klik kanan, pilih Tambah Rujukan... dan semak imbas untuk menambah System.Management.dll.

2. Mendapatkan semula Pemilik Proses melalui ID Proses

Coretan kod berikut mendapatkan semula pemilik berdasarkan ID proses yang diberikan:

<code class="language-csharp">public string GetProcessOwner(int processId)
{
    string query = $"Select * From Win32_Process Where ProcessID = {processId}";
    using (var searcher = new ManagementObjectSearcher(query))
    {
        using (var processList = searcher.Get())
        {
            foreach (ManagementObject obj in processList)
            {
                string[] argList = { string.Empty, string.Empty };
                int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
                if (returnVal == 0)
                {
                    return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>

3. Mendapatkan semula Pemilik Proses melalui Nama Proses

Kaedah ini mengenal pasti pemilik menggunakan nama proses:

<code class="language-csharp">public string GetProcessOwner(string processName)
{
    string query = $"Select * from Win32_Process Where Name = \"{processName}\"";
    using (var searcher = new ManagementObjectSearcher(query))
    {
        using (var processList = searcher.Get())
        {
            foreach (ManagementObject obj in processList)
            {
                string[] argList = { string.Empty, string.Empty };
                int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
                if (returnVal == 0)
                {
                    return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>

Fungsi ini menyediakan cara yang mudah untuk mendapatkan maklumat pemilikan proses, meningkatkan keupayaan pengurusan proses aplikasi C# anda. Perhatikan penggunaan using pernyataan untuk pengurusan sumber yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Pemilikan Proses dalam C# Menggunakan WMI?. 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