ロードされたDLLを調べることによってCLRを実行またはロードするプロセスを簡単に数えることができます。しかし、あなたが実行しているアプリケーションドメインの数を数えることができるかどうかはわかりません。しかし、私はそれがあなたの目的だとは思わない。
プロセスあたり1つのヒープと1つのGCがあり、コレクション中にすべての管理対象スレッドを中断します。したがって、プロセスを繰り返して、mscorlibがロードされているかどうかを確認することができます。そうすれば、.NET CLRとGCを実行していると仮定できます。プロセスにCLRがホストされているかどうかを判断するためのより良い方法があるはずですが、CLR APIもチェックしてください。
もっと理解を深めるために、C#でJeffrey Richterの本CLRを試してください。
.NET Aはexeファイルを管理
// 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
}
}
downvoteについて詳しく教えてください。 – fretje
私はリンクされた記事が質問に答えるために多くをしないと思う。あなたはあなたがあなたの答えに行った変更を使って、私にダウンボートの気分を悪くさせていますが。 –