Determine Loaded Assemblies如何确定我的 .NET 桌面应用程序已加载的所有程序集?我想将它们放在"关于"框中,这样我就可以通过电话查询客户以确定他们的 PC 上的 XYZ 版本。 很高兴看到托管和非托管程序集。我意识到这个列表会很长,但我打算对它进行增量搜索。
PowerShell 版本:
或者 System.Reflection.Assembly.GetLoadedModules(). 请注意,AppDomain.GetAssemblies 只会迭代当前 AppDomain 中的程序集。一个应用程序可能有多个 AppDomain,因此它可能会或可能不会做你想做的事。 对于包括非托管在内的所有 DLL,您可以调用 EnumProcessModules 来获取模块句柄,然后对每个句柄使用 GetModuleFileName 来获取名称。 参见 http://pinvoke.net/default.aspx/psapi.EnumProcessModules 和 http://msdn.microsoft.com/en-us/library/ms683197(VS.85).aspx(pinvoke.net 没有有这个签名,但很容易弄清楚)。 对于 64 位,您需要使用 EnumProcessModulesEx 看起来 |