台灣最大程式設計社群網站
線上人數
1232
 
會員總數:246085
討論主題:189661
歡迎您免費加入會員
討論區列表 >> C# >> 獲取一個進程的所有dll
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
獲取一個進程的所有dll
價值 : 20 QP  點閱數:295 回應數:3
樓主

耶露
門外漢
0 2
46 4
發送站內信

如題,我的問題跟這位大大的一樣
點我連結
我的目的是檢查該應用程式是否有載入自己寫的dll
根據連結的方式我下載了Microsoft.Samples.Debugging.MdbgEngine(1.4.0版)的套件
開發環境為Visual Studio 2019
寫法如下



但是,這行卻發生錯誤:
System.Runtime.InteropServices.COMException: 'Failed to load the runtime. (Exception from HRESULT: 0x80131700)'


上網查了資料後說是.NET Framework安裝上的問題。
我的Framework是.NET.Framework4.6.1,我也檢查過了,安裝上沒有什麼問題,我不知道問題出在哪。
我查了很多關於MdbgEngine的資料,相關說明並不多,所有也有考慮要不要使用其他方法。
其實就如題,我只要能獲取一個進程的所有dll,不一定要針對我的問題來回答。
請問各位大大有什麼問題解決方法或是其他建議嗎?

搜尋相關Tags的文章: [ C# ] , [ MDbgEngine ] ,
本篇文章發表於2020-06-30 10:38
1樓
回應

誰是誰
檢舉此回應
Appdomain.CurrentDomain.GetAssemblies()

注意 : 只會取得 "已被載入的assembly",載入 Assembly 是執行時期的行為,加入參考不見得被載入。
本篇文章回覆於2020-06-30 21:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

耶露
檢舉此回應
你好,誰是誰
Appdomain.CurrentDomain.GetAssemblies()確實能得到我想要抓取的東西,但是這僅限於寫在該應用程式底下執行才有用。
也就是說,我想在A應用程式去檢查B應用程式的dll,而不是直接在B底下做。
本篇文章回覆於2020-07-01 15:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

耶露
檢舉此回應
步驟一
下載CLR Managed Debugger連結

步驟二
在Visual Studio建立一個主控台應用程式(.NET Framework)

步驟三
從下載的CLR Managed Debugger專案中,找到mdbgeng.dll,corapi.dll,NativeDebugWrappers.dll,把這三個dll參考至主控台應用程式的專案

步驟四
在Program.cs寫入以下程式


完成步驟後,需要注意幾點。
程式中的參數(args),就是該應用程式的進程ID(PID),可以在工作管理員的詳細資料看到,在程式中可以使用Process抓取。
然後我的目的是只要有抓到一個載入應用程式的dll就好,所以馬上將做回傳並關閉。1是有抓到,0是沒抓到。
如果想看所有載入的dll,只要改成如下即可

本篇文章回覆於2020-07-02 15:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.