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