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中文网其他相关文章!