2

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

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

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

4

3 回答 3

2

幸运的是,微软似乎提供了一些方法让您能够阅读那些遗留的 VB6 文件。您可能想查看以下方法:

于 2013-06-01T18:33:25.043 回答
1

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

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

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

于 2013-06-01T18:36:08.190 回答
0

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

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

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

于 2013-06-01T18:26:12.687 回答