2016-09-22 40 views
0

在Sysinternals Process Explorer中,存在一個選項卡「.NET Assemblies」。通過代碼(C#或PowerShell)獲取有關進程(如Sysinternals Process Explorer)的.NET程序集信息

此選項卡僅顯示在實際使用.NET程序集的進程的屬性中。

如何獲取使用PowerShell或C#的任何正在運行的進程的相同信息?

謝謝。

+0

檢查[這](http://stackoverflow.com/questions/383686 /你怎麼做你通過當前加載程序集) – 3615

+0

謝謝。不幸的是,它看起來好像該代碼是用於進程的「自我反省」。我想讀出當前正在運行的其他進程的信息。 –

+0

好吧,那麼你可以使用MDBG附加到該過程並分析它的組件。但也許這是一個矯枉過正的問題,還有一些更簡單的方法。 – 3615

回答

1

看過this answer之後,我意識到可能沒有簡單的方法來獲得您所需要的。從nuget

 _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); 
      } 

     } 

你將不得不使用MDBG包:讓我們用MDBG去解決你的挑戰管理過程<package id="Microsoft.Samples.Debugging.MdbgEngine" version="1.4.0.0" targetFramework="net452" />

+0

感謝您的輸入。 我用這個,並能夠在一定程度上收集組件。對於某些進程(如chrome),它似乎掛起。 –

+0

@TimoSperisen正如我在迴應中提到的,它僅適用於.NET託管進程,而據我所知,Chrome主要是用C++編寫的,而不是在CLR上運行。 「.NET Assemblies」選項卡在Sysinternals Process Explorer中爲chrome顯示的內容是什麼? – 3615

+0

@TimoSperisen爲了避免hunging,你可以嘗試類似[this](http://stackoverflow.com/a/2080161/5246145)(從來沒有測試過) – 3615

相關問題