如何在程序中確定DLL是否爲託管代碼或非託管代碼?我們使用this code來確保我們所有託管的DLL都是MSIL。但它在非託管DLL上引發異常,所以我需要一種方法來首先檢查是否管理了一個DLL。如何以編程方式確定DLL是否被管理或不受管理?
回答
最簡單的選擇很可能就是試圖按照原樣打開文件並捕獲異常。任何非託管程序集都會在Assembly.LoadFrom
上引發異常。
但是,如果您想要更嚴格地確定此問題,則需要自行檢查PE標頭以獲取適當的信息。這article describes the process詳細,但它需要檢查DLL的PE頭的IMAGE_OPTIONAL_HEADER結構。
他們肯定不會那麼容易他們:)謝謝 –
@DavidThielen不 - 很遺憾,沒有簡單的API ,甚至在本土方面。 –
@DavidThielen在你開始編碼之前,請考慮所涉及的時間。如果處理異常可能會增加2ms到構建時間,而不是寫出一種解析PE頭的方法,只需要做一點數學運算(如果寫入處理器的時間/異常處理和檢測之間的時間差異)<構建的數量該計劃的生命週期「不值得做。 –
- 1. OLEDB提供程序是否管理或不受管理?
- 2. 以編程方式管理Outlook?
- 3. 以編程方式管理Windows FireWall
- 4. 以編程方式管理Glassfish域
- 5. 以編程方式管理IIS
- 6. openWRT:以編程方式管理控制
- 7. 進程管理:被殺或不被殺
- 8. ViewController內存管理(以編程方式或使用ib)
- 9. 如何確定是否在C#中管理進程?
- 10. Sharepoint:如何以編程方式管理SPFolder和SPListItem權限
- 11. 如何以編程方式管理線性子佈局?
- 12. 如何以編程方式更改Ambari管理員密碼
- 13. 如何以編程方式管理WCF日誌文件大小?
- 14. 如何以編程方式管理Gmail Vacation-Responder設置?
- 15. 此DLL是管理還是非託管?
- 16. 以編程方式管理ADAM中的自定義屬性
- 17. 以編程方式定製eclipse項目資源管理器
- 18. 以編程方式確定路徑是否受限制
- 19. 以編程方式magento管理連接不起作用
- 20. JPA:如何確保@Embeddable被管理?
- 21. 是否有可能以編程方式授權Facebook AdAccounts由App管理?
- 22. Android:是否可以通過編程方式刪除系統管理的通知?
- 23. VB.NET以管理員身份以編程方式登錄
- 24. 如何以編程方式確定Android應用程序是否被模糊處理?
- 25. 如何在c#中以編程方式確定類型是否接受空值?
- 26. 設備管理員的wipeData(0)不格式化SDCard。如何使用設備管理員或其他方式以編程方式擦除SDCard清潔?
- 27. 如何確定調用函數是否需要管理權限
- 28. 如何以編程方式確定我的處理器類型?
- 29. 如何管理Django管理
- 30. ejabberd:有沒有一種方法可以確定用戶是否是管理員?
你多久做一次?有時你只需要處理異常並繼續前進,我不知道是否有一種簡單(異常)的方法來解決這個問題。 –
@ScottChamberlain這是在構建過程中,所以不是一個大的時間命中。當代碼按預期運行時,我只是不喜歡有異常。 –
@DavidThielen有辦法做到這一點,但它有點複雜,因爲沒有直接的API。就我個人而言,捕捉異常是我會採取的方法,因爲它只是簡單和更清潔... –