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