首頁 > 後端開發 > C++ > 如何在 C# 中確定進程的擁有者?

如何在 C# 中確定進程的擁有者?

DDD
發布: 2025-01-17 11:51:10
原創
437 人瀏覽過

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

識別 C# 應用程式中的進程擁有者

確定與正在運行的進程關聯的使用者帳戶對於各種 C# 應用程式至關重要,特別是在管理系統資源或安全性時。雖然內建 Process 類別缺乏此功能,但 Windows Management Instrumentation (WMI) 提供了強大的解決方案。

利用 WMI 檢索進程所有權

WMI 提供 GetOwner 方法來檢索進程的擁有者。 在使用此方法之前,請確保您已在項目中新增對 System.Management.dll 的參考。

透過進程 ID 擷取擁有者:

以下程式碼片段示範如何使用進程ID來取得進程擁有者:

<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>
登入後複製

透過行程名稱擷取擁有者:

同樣,您可以根據進程名稱識別擁有者:

<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>
登入後複製

兩種方法都以「DOMAINuser」格式傳回擁有者。 使用 using 語句可確保正確的資源處置。 此方法有效地利用 WMI 來確定 C# 應用程式中的進程所有權。

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

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