使用 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中文網其他相關文章!