簡體   English   中英

C#-提取應用程序的clr.dll等

[英]C# - Extracting clr.dll etc. of application

我試圖從另一個用C#編寫的軟件中提取應用程序中的clr.dll和mscorwks.dll。 我的目的是收集內存轉儲分析所需的所有文件,即使該分析是在脫機計算機上完成的。

我到目前為止嘗試過的是

var currentAssembly = Assembly.LoadFrom(process.MainModule.FileName);//with the given process;
var assemblyList = currentAssembly.GetReferencedAssemblies().ToList();
var manifestList = currentAssembly.GetManifestResourceNames();

盡管GetReferencedAssemblies()沒有給我clr.dll或mscorwks.dll,但是只有mscorlib.dll和GetManifestResourceNames()給了我軟件中使用的圖像文件。

有沒有人有這樣的經驗? 我是否缺少獲取我想要的DLL的東西?

感謝您的關注!

問候,

爾迪

我猜想實現目標的最佳方法是使用Microsoft.Diagnostics.Runtime (nuget-package)及其DataTarget類。 這使您可以附加到流程並從流程中了解任何內容。

為了迭代所有加載的模塊(托管和非托管),您可以執行以下操作:

    using (dt = DataTarget.AttachToProcess(proc.Id, 100, AttachFlag.Passive))
    {
        // since 4.0 we can possibly find more than one runtime (side-by-side CLRs) in one AppDomain...
        if (dt.ClrVersions.Count > 0)
        {
            foreach (var clr in dt.ClrVersions)
            {
                Console.WriteLine(clr.Version + " " + clr.Flavor.ToString());
            }
        }
    }

其中procSystem.Diagnostics.Process的實例。 除了通過ClrVersions使用快捷方式,您還可以枚舉所有模塊(通過調用EnumerateModules

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM