【.NET】几行代码识别.NET程序进程(包括.NET FX和.NET CORE+)

前言:如果想要知道自己系统上运行的进程,有哪些是.NET开发的,就可以参考以下的方式。

1、获取系统当前运行的所有.net framework进程和ID

我不知道哪些是fx环境的,所以自己先创建一个.net framework的程序备用,例如 winform程序。然后运行。.

【.NET】几行代码识别.NET程序进程(包括.NET FX和.NET CORE+)

编写检测代码,并输出所有fx进程和id

var category = new PerformanceCounterCategory(".NET CLR Memory");            string[] instanceNames = category.GetInstanceNames();            var processes = Process.GetProcesses();
            foreach (string instanceName in instanceNames)            {                var matchingProcesses = processes.Where(p => p.ProcessName.Equals(instanceName, StringComparison.OrdinalIgnoreCase)).ToList();
                foreach (var process in matchingProcesses)                {                    Console.WriteLine($"进程: {process.ProcessName}, ID: {process.Id}");                }            }

 

运行效果:

【.NET】几行代码识别.NET程序进程(包括.NET FX和.NET CORE+)

进程查看:

【.NET】几行代码识别.NET程序进程(包括.NET FX和.NET CORE+)

2、识别.net core/.net 5以及以上版本的进程

本地应该还没有程序,所以创建一个.net core控制台,并运行,备用。例如一直输出1~10000

【.NET】几行代码识别.NET程序进程(包括.NET FX和.NET CORE+)

编写检测.net core或以上环境的进程的代码:

foreach (var process in Process.GetProcesses())            {                try                {                    if(process.Modules.OfType<ProcessModule>().Any(module =>                        module.ModuleName.Equals("coreclr.dll", StringComparison.OrdinalIgnoreCase) ||                        module.ModuleName.Equals("hostpolicy.dll", StringComparison.OrdinalIgnoreCase)))                    {                        Console.WriteLine($"进程: {process.ProcessName}, ID: {process.Id}");                    }                }                catch                {                    continue;                }            }

 

运行程序,测试结果如下。由于测试程序本身也是.net 6项目,所以一起被是别出来了。

【.NET】几行代码识别.NET程序进程(包括.NET FX和.NET CORE+)

以上就是全部内容,是不是觉得太过于简单了?欢迎大佬们点赞、在看、或转发~感谢各位~