C# Process
類別不直接揭示進程所有權。 但是,我們可以利用 Windows Management Instrumentation (WMI) 來取得此關鍵細節。 請記住在您的專案中加入對 System.Management.dll
的引用。
此方法根據給定的 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[] ownerInfo = new string[2]; int result = Convert.ToInt32(obj.InvokeMethod("GetOwner", ownerInfo)); if (result == 0) { return $"{ownerInfo[1]}\{ownerInfo[0]}"; // DOMAIN\user format } } } } return "NO OWNER"; }</code>
此替代方案使用進程名稱來尋找擁有者:
<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[] ownerInfo = new string[2]; int result = Convert.ToInt32(obj.InvokeMethod("GetOwner", ownerInfo)); if (result == 0) { return $"{ownerInfo[1]}\{ownerInfo[0]}"; // DOMAIN\user format } } } } return "NO OWNER"; }</code>
這些函數提供了一種強大的方法來確定進程所有權,為系統管理和安全分析提供了寶貴的見解。 使用 using
語句可確保正確的資源處置。
以上是如何使用 WMI 在 C# 中尋找進程的擁有者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!