首頁 > 後端開發 > C++ > 如何使用 C# 進程的 ID 或名稱來確定其擁有者?

如何使用 C# 進程的 ID 或名稱來確定其擁有者?

Barbara Streisand
發布: 2025-01-17 11:32:10
原創
234 人瀏覽過

How Can I Determine the Owner of a C# Process Using its ID or Name?

在 C# 中確定進程所有權

取得進程的擁有者是管理系統資源時的一項基本任務。在這種情況下,您正在尋求一種方法來識別名為「MyApp.exe」的進程的擁有者,即使在檢索進程清單之後也是如此。

雖然 Process 類別提供了基本的進程信息,但它缺乏以下功能以確定所有權。為了應對這項挑戰,可以採用 Windows Management Instrumentation (WMI)。透過新增對System.Management.dll的引用,可以獲得與進程關聯的使用者。

方法一:透過行程ID

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)
        {
            // return DOMAIN\user
            return argList[1] + "\" + argList[0];
        }
    }

    return "NO OWNER";
}
登入後複製

方法2:依行程名稱

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)
        {
            // return DOMAIN\user
            string owner = argList[1] + "\" + argList[0];
            return owner;       
        }
    }

    return "NO OWNER";
}
登入後複製

以上是如何使用 C# 進程的 ID 或名稱來確定其擁有者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板