프로그램을 실행할 때 실행중인 프로세스 목록과 해당 앱 도메인 목록을 가져올 수 있습니까? 내가 알고있다 mscoree.dll은 ICorRuntimeHost.EnumDomains 방법을 사용하여 현재 프로세스의 모든 응용 프로그램 도메인을 검색 할 수있게합니다. 이 정보를 얻는 방법은 없이외부 API 및 순수한 C# 코드를 사용하고 있습니까? mdbg 도움이 될 수있는 몇 가지 기능이 있지만이 디버거를 사용하는 방법을 잘 모르겠습니다 이해합니다. 나는 C#을 사용하는 솔루션을 찾고있다.해당 앱 도메인으로 모든 프로세스 가져 오기
감사
편집 : 목표는 HTML 페이지에 해당 응용 프로그램 도메인과 함께 실행하는 모든 과정을 보여주는 것입니다. 모든 실행중인 프로세스를 반복하고이 정보를 검색하는 기능이 이상적입니다.
private static List<AppDomainInf> GetAppDomains()
{
IList<AppDomain> mAppDomainsList = new List<AppDomain>();
List<AppDomainInf> mAppDomainInfos = new List<AppDomainInf>();
IntPtr menumHandle = IntPtr.Zero;
ICorRuntimeHost host = new CorRuntimeHost();
try
{
host.EnumDomains(out menumHandle);
object mTempDomain = null;
//add all the current app domains running
while (true)
{
host.NextDomain(menumHandle, out mTempDomain);
if (mTempDomain == null) break;
AppDomain tempDomain = mTempDomain as AppDomain;
mAppDomainsList.Add((tempDomain));
}
//retrieve every app domains detailed information
foreach (var appDomain in mAppDomainsList)
{
AppDomainInf domainInf = new AppDomainInf();
domainInf.Assemblies = GetAppDomainAssemblies(appDomain);
domainInf.AppDomainName = appDomain.FriendlyName;
mAppDomainInfos.Add(domainInf);
}
return mAppDomainInfos;
}
catch (Exception)
{
throw; //rethrow
}
finally
{
host.CloseEnum(menumHandle);
Marshal.ReleaseComObject(host);
}
}
디버깅 기능인 ICorDebugProcess :: EnumerateAppDomains()가 필요합니다. 분명히 원하는 것을 성취 할 수있는 더 좋은 방법이 있지만이 코드의 목표는 전적으로 보이지 않습니다. –
제안 해 주셔서 감사합니다. 그러나 가능한 경우 모든 C++ 라이브러리 또는 가져 오기를 사용하지 않으려 고합니다. – Matthew