枚举进程加载模块信息问题
win7操作系统 .net4.7,测试进程QQProtect
同样的代码创建新的工程执行没问题,改变.net框架到4.0就变了,再改回来还是一样,只有重新建立的工程没问题.代码如下:using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace testProcess2
{
    class Program
    {
        static void Main(string[] args)
        {
            Process[] pname = Process.GetProcesses();
            //遍历进程
            foreach (Process p in pname)
            {
                //如果查找到进程名称 返回  
                try
                {
                    if (p.MainModule.FileName.ToLower().IndexOf("QQProtect".ToLower()) != -1)
                    {
                        Console.WriteLine(p.MainModule.FileName + "\n");
                        Console.WriteLine("模块数" + p.Modules.Count + "\n");
                        for (int i = 0; i < p.Modules.Count; i++)
                        {
                            Console.WriteLine(p.Modules[i].FileName + "\n");
                        }
                        Console.WriteLine("\n");
                    }
                }
                catch (Exception)
                {
                    continue;       //遍历无访问权限的进程时会跑出异常
                }
            }
            Console.ReadKey();
        }
    }
}不正常.net框架4.0下正常.net框架4.6.1下正常框架版本号

解决方案 »

  1.   

    我用过.NET 4.0做过这个获取进程的,没有遇到什么问题啊。
      

  2.   

    实在不行 只能用C++写一个dll 调用了,但是这个有点麻烦哪!
      

  3.   


    我这个是vs2017 我刚新建的工程测试的 确实有问题哦!
    你易管理员身份运行VS,应该与哪个.NET框架没有太大关系
      

  4.   


    我这个是vs2017 我刚新建的工程测试的 确实有问题哦!
    我试了一下你的代码,我不管用哪个.NET框架都是现实你上面不正常的那个
      

  5.   


    我这个是vs2017 我刚新建的工程测试的 确实有问题哦!
    我试了一下你的代码,我不管用哪个.NET框架都是现实你上面不正常的那个
    我刚新建的工程默认版本4.6.1就没问题
    22805715+qq测试一下