Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Pemilik Proses dalam C#?

Bagaimanakah Saya Boleh Menentukan Pemilik Proses dalam C#?

DDD
Lepaskan: 2025-01-17 11:51:10
asal
436 orang telah melayarinya

How Can I Determine the Owner of a Process in C#?

Mengenal pasti Pemilik Proses dalam Aplikasi C#

Menentukan akaun pengguna yang dikaitkan dengan proses berjalan adalah penting untuk pelbagai aplikasi C#, terutamanya apabila menguruskan sumber sistem atau keselamatan. Walaupun kelas Process terbina dalam tidak mempunyai fungsi ini, Instrumen Pengurusan Windows (WMI) menyediakan penyelesaian yang mantap.

Menggunakan WMI untuk Mendapatkan Pemilikan Proses

WMI menawarkan kaedah GetOwner untuk mendapatkan semula pemilik sesuatu proses. Sebelum menggunakan kaedah ini, pastikan anda telah menambah rujukan kepada System.Management.dll dalam projek anda.

Mengambil semula Pemilik melalui ID Proses:

Coretan kod berikut menunjukkan cara mendapatkan pemilik proses menggunakan ID proses:

<code class="language-csharp">public string GetProcessOwner(int processId)
{
    string query = $"Select * From Win32_Process Where ProcessID = {processId}";
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
    {
        using (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 $"{argList[1]}\{argList[0]}";
                }
            }
        }
    }
    return "NO OWNER";
}</code>
Salin selepas log masuk

Mengambil semula Pemilik mengikut Nama Proses:

Begitu juga, anda boleh mengenal pasti pemilik berdasarkan nama proses:

<code class="language-csharp">public string GetProcessOwner(string processName)
{
    string query = $"Select * from Win32_Process Where Name = \"{processName}\"";
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
    {
        using (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 $"{argList[1]}\{argList[0]}";
                }
            }
        }
    }
    return "NO OWNER";
}</code>
Salin selepas log masuk

Kedua-dua kaedah mengembalikan pemilik dalam format "DOMAINuser". Penggunaan pernyataan using memastikan pelupusan sumber yang betul. Pendekatan ini secara berkesan memanfaatkan WMI untuk menentukan pemilikan proses dalam aplikasi C# anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Pemilik Proses dalam C#?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan