Я бы сказал, что вы можете легко подсчитать процессы, которые запускаются или загружают CLR, проверяя загруженные библиотеки DLL. Но я не уверен, что вы сможете подсчитать количество запущенных доменов приложений. Но я не думаю, что это ваша цель.
Существует только одна куча на процесс, а также один GC, который приостанавливает все управляемые потоки во время сбора. Таким образом, вы можете перебирать процессы и проверять, загружен ли mscorlib, если это так, вы можете предположить, что на нем запущены .NET CLR и GC. Я уверен, что должны быть лучшие способы определить, размещен ли процесс в CLR, пожалуйста, проверьте также CLR API.
Пожалуйста, попробуйте книгу Джеффри Рихтера CLR через C #, чтобы лучше понять.
Приведенный ниже код повторяет процессы .NET
// Import these namespaces
using System.Diagnostics;
using System.ComponentModel;
// Here is the code
Process[] prcs = Process.GetProcesses();
foreach (Process prc in prcs)
{
try
{
foreach (ProcessModule pm in prc.Modules)
{
if (pm.ModuleName.Contains("mscorlib"))
{
Console.WriteLine(prc.ProcessName);
}
}
}
catch (Win32Exception exWin)
{
// Cannot detemine process modules ... some will deny access
}
}