首頁 > 後端開發 > C++ > 如何使用 WMI 決定 C# 中的進程所有權?

如何使用 WMI 決定 C# 中的進程所有權?

Patricia Arquette
發布: 2025-01-17 11:41:09
原創
237 人瀏覽過

How to Determine Process Ownership in C# Using WMI?

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

有效確定進程所有權對於各種 C# 應用程式至關重要,特別是那些專注於系統資源管理和安全性的應用程式。本指南示範如何使用 Windows Management Instrumentation (WMI) 程式庫來實現此目的。

利用 WMI 實現進程所有權

WMI 提供了用於管理和監控系統元件(包括進程)的強大工具。 以下是如何利用 WMI 來識別進程擁有者:

1。 新增 System.Management.dll 參考

在 Visual Studio 中,導覽至 解決方案資源管理器 中項目的 引用。右鍵單擊,選擇新增引用...,然後瀏覽新增System.Management.dll.

2。 透過進程 ID 檢索進程擁有者

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

<code class="language-csharp">public string GetProcessOwner(int processId)
{
    string query = $"Select * From Win32_Process Where ProcessID = {processId}";
    using (var searcher = new ManagementObjectSearcher(query))
    {
        using (var processList = searcher.Get())
        {
            foreach (ManagementObject obj in processList)
            {
                string[] argList = { string.Empty, string.Empty };
                int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
                if (returnVal == 0)
                {
                    return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>
登入後複製

3。 透過進程名稱檢索進程擁有者

此方法使用進程名稱來識別擁有者:

<code class="language-csharp">public string GetProcessOwner(string processName)
{
    string query = $"Select * from Win32_Process Where Name = \"{processName}\"";
    using (var searcher = new ManagementObjectSearcher(query))
    {
        using (var processList = searcher.Get())
        {
            foreach (ManagementObject obj in processList)
            {
                string[] argList = { string.Empty, string.Empty };
                int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));
                if (returnVal == 0)
                {
                    return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format
                }
            }
        }
    }
    return "NO OWNER";
}</code>
登入後複製

這些函數提供了一種獲取進程所有權資訊的簡單方法,增強了 C# 應用程式的進程管理功能。 請注意使用 using 語句進行正確的資源管理。

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

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