- Better-EN5 插件:基于官方示例,注册3个右键菜单项 - Manager 管理器:横版5标签布局,深色主题 WPF 应用 - 自定义 Fluent 安装器:无边框窗口,圆角,淡入淡出动画 - 删除旧代码,移除 SDK 自动安装器 - 三个项目全部编译通过(0 错误)
55 lines
2.4 KiB
C#
55 lines
2.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Reflection.Metadata;
|
|
using System.Reflection.PortableExecutable;
|
|
|
|
var dllPath = @"C:\Program Files (x86)\Seewo\EasiNote5\EasiNote5_5.2.4.9855\Main\EasiNote.OfficeDocumentConverter.dll";
|
|
|
|
using var stream = File.OpenRead(dllPath);
|
|
using var pe = new PEReader(stream);
|
|
|
|
// Check PE characteristics
|
|
var headers = pe.PEHeaders;
|
|
Console.WriteLine($"Machine: {headers.CoffHeader.Machine}");
|
|
Console.WriteLine($"Characteristics: {headers.CoffHeader.Characteristics}");
|
|
Console.WriteLine($"Is32Bit: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.Bit32Machine)}");
|
|
Console.WriteLine($"IsDll: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.Dll)}");
|
|
Console.WriteLine($"IsExecutable: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.ExecutableImage)}");
|
|
Console.WriteLine($"IsLargeAddressAware: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.LargeAddressAware)}");
|
|
|
|
Console.WriteLine($"\nOptional Header Magic: {headers.PEHeader.Magic} (0x10B=PE32, 0x20B=PE32+)");
|
|
Console.WriteLine($"Subsystem: {headers.PEHeader.Subsystem}");
|
|
|
|
// Check the .NET metadata for architecture requirements
|
|
var mr = pe.GetMetadataReader();
|
|
var asmDef = mr.GetAssemblyDefinition();
|
|
Console.WriteLine($"\nAssembly: {mr.GetString(asmDef.Name)} v{asmDef.Version}");
|
|
|
|
// Print target framework attribute
|
|
Console.WriteLine("\nCustom Attributes:");
|
|
foreach (var ch in asmDef.GetCustomAttributes())
|
|
{
|
|
var ca = mr.GetCustomAttribute(ch);
|
|
// Try to get the attribute constructor name
|
|
if (ca.Constructor.Kind == HandleKind.MemberReference)
|
|
{
|
|
var mref = mr.GetMemberReference((MemberReferenceHandle)ca.Constructor);
|
|
if (mref.Parent.Kind == HandleKind.TypeReference)
|
|
{
|
|
var tref = mr.GetTypeReference((TypeReferenceHandle)mref.Parent);
|
|
var attrName = $"{mr.GetString(tref.Namespace)}.{mr.GetString(tref.Name)}";
|
|
Console.WriteLine($" {attrName}");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Print referenced system assemblies
|
|
Console.WriteLine("\nReferenced System Assemblies:");
|
|
foreach (var aref in mr.AssemblyReferences)
|
|
{
|
|
var ar = mr.GetAssemblyReference(aref);
|
|
var name = mr.GetString(ar.Name);
|
|
if (name.StartsWith("System") || name.StartsWith("Microsoft") || name == "WindowsBase" || name == "PresentationCore" || name == "PresentationFramework")
|
|
Console.WriteLine($" {name} v{ar.Version}");
|
|
}
|