Wie kann ich alle Baugruppen ermitteln, die meine .NET-Desktopanwendung geladen hat? Ich möchte sie in die About-Box stellen, damit ich Kunden am Telefon fragen kann, welche Version von XYZ sie auf ihrem PC haben.
Es wäre schön, sowohl verwaltete als auch nicht verwaltete Assemblys zu sehen. Ich weiß, dass die Liste lang werden wird, aber ich plane, eine inkrementelle Suche darauf zu machen.
Entweder das oder System.Reflection.Assembly.GetLoadedModules ().
Beachten Sie, dass AppDomain.GetAssemblies nur Assemblys in der aktuellen Anwendungsdomäne iteriert. Es ist möglich, dass eine Anwendung mehr als eine Anwendungsdomäne enthält, sodass Sie möglicherweise das tun können, was Sie möchten.
Für alle DLLs einschließlich nicht verwalteter können Sie EnumProcessModules anpinnen, um die Modulhandles zu erhalten, und dann GetModuleFileName für jedes Handle verwenden, um den Namen zu erhalten.
Siehe Ссылка und Ссылка (pinvoke.net hat nicht die Signatur dafür, aber es ist leicht herauszufinden).
Für 64 Bit müssen Sie EnumProcessModulesEx
verwendenTags und Links .net dll winforms assemblies