在 C# 中確定進程所有權
取得進程的擁有者是管理系統資源時的一項基本任務。在這種情況下,您正在尋求一種方法來識別名為「MyApp.exe」的進程的擁有者,即使在檢索進程清單之後也是如此。
雖然 Process 類別提供了基本的進程信息,但它缺乏以下功能以確定所有權。為了應對這項挑戰,可以採用 Windows Management Instrumentation (WMI)。透過新增對System.Management.dll的引用,可以獲得與進程關聯的使用者。
方法一:透過行程ID
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) { // return DOMAIN\user return argList[1] + "\" + argList[0]; } } return "NO OWNER"; }
方法2:依行程名稱
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) { // return DOMAIN\user string owner = argList[1] + "\" + argList[0]; return owner; } } return "NO OWNER"; }
以上是如何使用 C# 進程的 ID 或名稱來確定其擁有者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!