After looking at this answer I've realized that maybe there is no easy way to get what you need. So let's go with MDBG to solve your challenge for managed processes:
_engine = new MDbgEngine();
_engine.Attach(p.Id, RuntimeEnvironment.GetSystemVersion());
_engine.Processes.Active.Go().WaitOne();
foreach (MDbgAppDomain appDomain in _engine.Processes.Active.AppDomains) {
foreach (CorAssembly assembly in appDomain.CorAppDomain.Assemblies) {
Console.WriteLine(assembly.Name);
}
}
You will have to using MDBG package from nuget: <package id="Microsoft.Samples.Debugging.MdbgEngine" version="1.4.0.0" targetFramework="net452" />