首页 > 后端开发 > C++ > 获取进程的可执行路径时如何避免Win32Exception?

获取进程的可执行路径时如何避免Win32Exception?

Barbara Streisand
发布: 2024-12-28 01:09:10
原创
917 人浏览过

How to Avoid Win32Exception When Getting a Process's Executable Path?

访问 Process.MainModule.FileName 时解决 Win32Exception

尝试通过 Process.MainModule.FileName 检索正在运行的进程的文件路径时,由于无法列出进程,某些进程可能会抛出 Win32Exception模块。为了解决这个问题,Jeff Mercado 提供了一种替代方法。

改编的 C# 代码:

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管理规范 (WMI) 用于查询特定进程并检索其可执行路径,而无需尝试访问其进程模块。它避免了直接访问 Process.MainModule.FileName 属性时遇到的错误。

以上是获取进程的可执行路径时如何避免Win32Exception?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板