如何在程序中确定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. 以编程方式管理IIS
- 3. 以编程方式管理Windows FireWall
- 4. 以编程方式管理Outlook?
- 5. openWRT:以编程方式管理控制
- 6. 以编程方式管理Glassfish域
- 7. 进程管理:被杀或不被杀
- 8. ViewController内存管理(以编程方式或使用ib)
- 9. 如何确定是否在C#中管理进程?
- 10. 如何以编程方式管理Gmail Vacation-Responder设置?
- 11. Sharepoint 2010 DocumentSets - 如何以编程方式管理?
- 12. 如何以编程方式管理WCF日志文件大小?
- 13. 如何以编程方式更改Ambari管理员密码
- 14. Sharepoint:如何以编程方式管理SPFolder和SPListItem权限
- 15. 如何以编程方式管理线性子布局?
- 16. 此DLL是管理还是非托管?
- 17. 以编程方式管理ADAM中的自定义属性
- 18. 以编程方式定制eclipse项目资源管理器
- 19. 以编程方式确定路径是否受限制
- 20. 以编程方式magento管理连接不起作用
- 21. 如何通过编程确定帐户是否属于管理员组?
- 22. JPA:如何确保@Embeddable被管理?
- 23. 是否有可能以编程方式授权Facebook AdAccounts由App管理?
- 24. Android:是否可以通过编程方式删除系统管理的通知?
- 25. 管理或项目管理是否应该到冲刺回顾
- 26. VB.NET以管理员身份以编程方式登录
- 27. 如何以编程方式确定Android应用程序是否被模糊处理?
- 28. 如何在c#中以编程方式确定类型是否接受空值?
- 29. 设备管理员的wipeData(0)不格式化SDCard。如何使用设备管理员或其他方式以编程方式擦除SDCard清洁?
- 30. 如何管理Django管理
你多久做一次?有时你只需要处理异常并继续前进,我不知道是否有一种简单(异常)的方法来解决这个问题。 –
@ScottChamberlain这是在构建过程中,所以不是一个大的时间命中。当代码按预期运行时,我只是不喜欢有异常。 –
@DavidThielen有办法做到这一点,但它有点复杂,因为没有直接的API。就我个人而言,捕捉异常是我会采取的方法,因为它只是简单和更清洁... –