【问题标题】:Reading VB6 binary access written files in C#在 C# 中读取 VB6 二进制访问写入的文件
【发布时间】:2013-05-28 08:53:22
【问题描述】:

我们有一个写出配置文件的 Visual Basic 6 应用程序。通过查看应用程序的代码,它使用“二进制访问写入”功能来写出配置对象。我试图弄清楚如何在 C# 中读取这些类型的文件。显然,我需要构建一个与必要字段匹配的对象,但这似乎不是我熟悉的标准对象序列化。代码没有明确说明应用程序如何读取配置文件并将值分配给配置对象的字段。

我尝试在 C# 中使用 BinaryReader 类。配置对象主要包含字符串,但使用 ReadString() 读取文件时未返回格式正确的字符串(我可以看到一些可识别的文本,但字段被组合或截断,以及垃圾二进制字符)。

我假设 C# BinaryReader 不适合解码这些类型的 VB6 二进制文件。有关如何阅读这些内容的任何建议?

【问题讨论】:

    标签: c# binaryfiles vb6-migration


    【解决方案1】:

    幸运的是,Microsoft 似乎提供了让您能够读取那些旧版 VB6 文件的方法。你可能想看看这些方法:

    【讨论】:

      【解决方案2】:

      如果您不想破译 C# 中的格式,您可以创建一个 VB6 dll 来为您进行读/写。然后您可以简单地使用 C# 中的 VB6 dll。

      这里有一些关于如何从 C# 调用 VB6 dll 的提示:Calling vb6 dlls from c#

      根据链接问题中给出的答案,我个人会走 COM 互操作路线。

      【讨论】:

        【解决方案3】:

        除非你能找到一些关于这种“二进制访问写入”格式的明确文档,否则我会编写一个 VB6 应用程序来读取你的文件并将它们转换成更便携的东西——例如 XML 或 JSON。

        您可以轻松地花费大量时间对文件格式进行逆向工程,以一种适用于所有测试样本的方式,但不适用于仅在客户站点上看到的某些极端情况。从根本上说,对未记录的文件格式进行逆向工程是一件很烦人的事情。

        当然,文件格式可能已记录在案 - 但您可能仍会发现编写 VB6 转换工具比用 C# 实现阅读器更简单。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-26
          • 1970-01-01
          • 1970-01-01
          • 2021-11-09
          • 2016-07-02
          • 1970-01-01
          • 2022-11-05
          • 1970-01-01
          相关资源
          最近更新 更多