首頁 >後端開發 >C++ >如何使用 WMI 在 C# 中取得進程的擁有者?

如何使用 WMI 在 C# 中取得進程的擁有者?

DDD
DDD原創
2025-01-17 11:36:09863瀏覽

How Can I Get the Owner of a Process in C# Using WMI?

C# 中取得進程擁有者

精確控制和安全性管理需要取得進程的擁有者資訊。本文介紹一種利用 Windows Management Instrumentation (WMI) 取得進程擁有者的方法。

首先,需要引用 System.Management.dll。這將允許您使用 WMI 框架。

透過進程 ID 取得擁有者

以下程式碼片段根據進程 ID 取得進程的擁有者:

<code class="language-csharp">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)
        {
            // 返回 DOMAIN\user 格式
            return argList[1] + "\" + argList[0];
        }
    }

    return "NO OWNER";
}</code>

透過行程名稱取得擁有者

要透過進程名稱取得擁有者,可以使用以下程式碼片段:

<code class="language-csharp">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)
        {
            // 返回 DOMAIN\user 格式
            string owner = argList[1] + "\" + argList[0];
            return owner;
        }
    }

    return "NO OWNER";
}</code>

透過使用 WMI,您可以有效地確定進程的擁有者,從而在管理系統資源方面獲得靈活性和安全性。

以上是如何使用 WMI 在 C# 中取得進程的擁有者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn