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>
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>
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!