用C#读取VB6二进制访问写入文件

时间:2013-06-01 18:21:26

标签: c# binaryfiles vb6-migration

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

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

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

3 个答案:

答案 0 :(得分:2)

幸运的是,Microsoft似乎提供了一些方法来使您能够读取这些传统的VB6文件。您可能想要查看这些方法:

答案 1 :(得分:1)

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

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

根据相关问题给出的答案,我个人会去COM互操作路线。

答案 2 :(得分:0)

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

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

当然,可能是文件格式已经记录了 - 但您仍然可能发现编写VB6转换工具比在C#中实现读者更简单。