Geladene Baugruppen ermitteln

8

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.

    
Nick 21.08.2008, 19:50
quelle

5 Antworten

12
%Vor%     
Greg Hurlman 21.08.2008, 19:55
quelle
2

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.

    
TheSmurf 21.08.2008 19:55
quelle
1

PowerShell-Version:

%Vor%     
bernd_k 01.05.2011 08:01
quelle
0

Sieht so aus als würde AppDomain.CurrentDomain.GetAssemblies(); den Trick machen:)

    
Nick 21.08.2008 19:54
quelle
0

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

verwenden     
denis phillips 21.08.2008 20:33
quelle

Tags und Links