首页 >后端开发 >C++ >如何使用 WMI 确定 C# 中的进程所有权?

如何使用 WMI 确定 C# 中的进程所有权?

Patricia Arquette
Patricia Arquette原创
2025-01-17 11:41:09239浏览

How to Determine Process Ownership in C# Using WMI?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn