我们有一个Visual basic6应用程序来写出一个配置文件。从应用程序的代码可以看出,它使用了一个“二进制访问写”函数来写出配置对象。我正在尝试弄清楚如何在C#中读取这些类型的文件。显然,我需要构建一个与必要字段匹配的对象,但这似乎不是我熟悉的标准对象序列化。代码并不清楚应用程序是如何读取配置文件以及如何为配置对象的字段赋值的。
我尝试过在C#中使用BinaryReader类。配置对象主要包含字符串,但是使用ReadString()读取文件不会返回格式正确的字符串(我可以看到一些可识别的文本,但是字段被组合或截断,以及垃圾二进制字符)。
我假设C# BinaryReader不适合解码这些类型的VB6二进制文件。关于如何阅读这些文章,有什么建议吗?
发布于 2013-06-02 02:33:25
幸运的是,微软似乎提供了一些方法来使您能够读取这些遗留的VB6文件。您可能想要检查以下方法:
发布于 2013-06-02 02:36:08
如果您不想破译C#中的格式,可以只创建一个VB6 dll来为您执行读/写操作。然后,您可以简单地使用C#中的VB6 dll。
这里有一些关于如何从C#调用VB6 dll的提示:Calling vb6 dlls from c#
从链接的问题中给出的答案来看,我个人会选择COM互操作路线。
发布于 2013-06-02 02:26:13
除非您能找到一些关于这种“二进制访问写入”格式的明确文档,否则我会编写一个VB6应用程序来读取您的文件,并将其转换为更可移植的格式-例如XML或JSON。
您可以轻松地花费大量时间对文件格式进行反向工程,使其适用于所有测试样本,但不适用于仅在客户站点上才能看到的某些特殊情况。从根本上说,对未记录的文件格式进行逆向工程是一件必须做的烦人的事情。
当然,文件格式也可能有文档记录--但是您可能仍然会发现,与用C#实现阅读器相比,编写一个VB6转换工具要简单得多。
https://stackoverflow.com/questions/16875842
复制相似问题