You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET遍历系统进程获取MainModule.FileName路径报错问题求助

问题原因与解决方案

你遇到的报错由两类问题共同导致:

1. 基础代码顺序错误

你的代码中For Each Proc As Process In ProcessList写在了ProcessList变量定义的前面,运行时首先会触发「变量未定义」错误,需要先声明变量再遍历。

2. MainModule属性读取限制

这是你报错的核心原因:

  • 64位系统下如果你的程序生成目标为32位(x86),没有权限读取64位进程的主模块信息,会直接抛出拒绝访问错误
  • 就算架构匹配,系统核心进程、其他用户启动的进程、权限高于当前程序的进程,也会因为权限不足无法读取MainModule属性
修复步骤
  • 打开项目属性的「生成」选项卡,将目标平台改为任意CPU,取消勾选「首选32位」
  • 给MainModule读取逻辑加异常捕获,跳过无权限访问的进程
  • 修正代码执行顺序

修正后的可用代码如下:

' 先获取进程列表再遍历
Dim ProcessList As List(Of Process) = Process.GetProcesses.ToList()
For Each Proc As Process In ProcessList
    Dim Name As String = Proc.ProcessName
    Dim Path As String = String.Empty
    Dim Icon As System.Drawing.Image = Nothing
    Try
        Path = Proc.MainModule.FileName
        Icon = System.Drawing.Icon.ExtractAssociatedIcon(Path).ToBitmap()
    Catch ex As Exception
        ' 无权限读取的进程直接跳过,或者你可以自行赋值默认值
        Continue For
    End Try
    ' 后续你的业务逻辑
Next
补充说明
  • 如果需要尽可能读取更多进程的模块信息,右键点击程序选择「以管理员身份运行」即可
  • 部分轻量进程本身没有关联的可执行文件路径,读取不到Path属性属于正常情况

内容的提问来源于stack exchange,提问作者Sh3ewit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:54:02