如何从 Win32 可执行文件(最好是 C#)中提取 RT_RCDATA 部分?
题
目前我知道如何执行此操作的唯一方法是在 Visual Studio 中打开 EXE。如果可能的话,我希望能够完全用 C# 来完成此操作。其他选项包括:
- 从 Win32 API P/调用 LoadResource()
- 使用现有工具(有人知道吗?)
- 还有其他想法吗?
谢谢!
其他提示
我假设您正在尝试从可执行文件中读取 RCDATA 类型的资源(请注意,“可执行部分”意味着不同的东西 - 它指的是 PE 文件的 .text、.data、.rdata 等部分)。如果您想从当前程序集中读取它,这里有一个教程,展示了如何操作: 使用 GetManifestResourceStream 访问嵌入式资源, , 使用 获取清单资源名称 和 获取清单资源流 方法。
如果您不想从当前可执行文件中读取它,可以使用类似于所示的方法 这里.
与 PInvoke 相比,这些方法的优势在于它们是 100% .NET,并且您不必费心将参数编组到平台数据类型或从平台数据类型中编组,并确保验证所有返回值。
有一个非常有帮助的 用于许多资源任务的库 在 http://resourcelib.codeplex.com
许多类和函数确实包装了这些 window-api-calls UpdateResource(...)
, , ETC。
不隶属于 StackOverflow