C# 如何确定.NET程序集是否是在不使用反射和第三方软件的情况下使用平台目标AnyCPU、AnyCPU、32位、x86、x64构建的
我对如何通过正确读取PE头直接从文件中读取汇编平台目标信息感兴趣。我知道可以通过C# 如何确定.NET程序集是否是在不使用反射和第三方软件的情况下使用平台目标AnyCPU、AnyCPU、32位、x86、x64构建的,c#,.net,C#,.net,我对如何通过正确读取PE头直接从文件中读取汇编平台目标信息感兴趣。我知道可以通过assembly.reflectiononnlyload(rawsassembly)将程序集加载到新的AppDomain并通过assembly.ManifestModule.GetPEKind(out-var-peKind,out-var-machine)对其进行调查。我还知道第三方工具,如CorFlags.exe,可以读取CorFlag值。但我对直接从文件中获取平台目标信息感兴趣 谢谢 可能的结果: -------
assembly.reflectiononnlyload(rawsassembly)将程序集加载到新的AppDomain
编码>并通过assembly.ManifestModule.GetPEKind(out-var-peKind,out-var-machine)对其进行调查代码>。我还知道第三方工具,如CorFlags.exe
,可以读取CorFlag值。但我对直接从文件中获取平台目标信息感兴趣
谢谢
可能的结果:
----------------------------------------------------------------
| Assembly target | Processor architecture | Is32Pref| Is32Req |
----------------------------------------------------------------
| Any CPU | MSIL | false | false |
----------------------------------------------------------------
| Any CPU Pref32 | x86 | true | |
----------------------------------------------------------------
| x64 | Amd64 | false | false |
----------------------------------------------------------------
| x86 | x86 | false | true |
----------------------------------------------------------------
解决方案基于以下链接:
,,
CorFlagsReader.cs-在Apache许可证下,版本2.0注意此代码的许可问题。codeproject.com使用CPOL,这是一种“私人使用,请随意”,但它禁止重新发布和重新授权代码。感谢您提供的信息。在codeproject中,只有更新的枚举标记。最重要的代码部分来自codeplex。我还对代码做了一些更改,但核心仍然来自codeplex。因为我花了一天的时间来寻找阅读CorFlags的有效解决方案,而不使用反射或第三方软件,而且因为我发现了很多类似的问题,所以我认为分享这些问题会有所帮助。
var res = CorFlagsReader.ReadAssemblyMetadata("file.exe");
----------------------------------------------------------------
| Assembly target | Processor architecture | Is32Pref| Is32Req |
----------------------------------------------------------------
| Any CPU | MSIL | false | false |
----------------------------------------------------------------
| Any CPU Pref32 | x86 | true | |
----------------------------------------------------------------
| x64 | Amd64 | false | false |
----------------------------------------------------------------
| x86 | x86 | false | true |
----------------------------------------------------------------