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
Lepaskan: 2025-01-17 11:41:09
asal
236 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan