首页 >后端开发 >C++ >如何在 C# 中可靠地获取进程的文件路径并避免 Win32Exceptions?

如何在 C# 中可靠地获取进程的文件路径并避免 Win32Exceptions?

Susan Sarandon
Susan Sarandon原创
2025-01-03 12:31:40659浏览

How to Reliably Get a Process's File Path in C# and Avoid Win32Exceptions?

在 C# 中访问 Process.MainModule.FileName 时避免 Win32 异常

在 C# 中,尝试检索进程 MainModule 的 FileName 属性有时可能会触发 Win32Exception,特别是在使用 64 位平台时。为了解决这个问题,Jeff Mercado 的解决方案提供了一种可靠的方法。

改编的代码:

为了简化流程,这里对 Mercado 的代码进行了改编,用于获取文件路径某具体的process:

string s = GetMainModuleFilepath(2011);

实现:

private string GetMainModuleFilepath(int processId)
{
    string wmiQueryString = "SELECT ProcessId, ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId;
    using (var searcher = new ManagementObjectSearcher(wmiQueryString))
    {
        using (var results = searcher.Get())
        {
            ManagementObject mo = results.Cast<ManagementObject>().FirstOrDefault();
            if (mo != null)
            {
                return (string)mo["ExecutablePath"];
            }
        }
    }
    return null;
}

此方法在 Windows Management Instrumentation (WMI) 中查询具有指定进程 ID 的进程的 ExecutablePath 属性。如果找到匹配的进程,则返回其文件路径。否则,返回 null。

以上是如何在 C# 中可靠地获取进程的文件路径并避免 Win32Exceptions?的详细内容。更多信息请关注PHP中文网其他相关文章!

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