0

我正在尝试恢复使用 97-2003 版本的 word 文档。我不记得我为什么这样做,但我将复合文件流保存到一个文件夹中,这绝对是我希望作为原始文档返回的东西。有什么解决办法吗?

谢谢!

4

1 回答 1

0

当然,理论上你应该能够恢复它。

您应该能够使用创建根复合文档

StgCreateDocfile() // or StgCreateStorageEx()

IStorage*如果成功,您将需要来自 this 的指针。

如果您的文件夹中有一个文件夹,您将不得不为每个文件夹创建子存储 - 并以递归方式进行。API是IStorage::CreateStorage()……查一下。

如果文件夹中有文件,则需要在与文件夹等效的存储中创建流。要创建流,请使用IStorage::CreateStream()...查找参数。

查看您的屏幕截图,它有一些名为 [1]CompObj 或 [5]SummaryDocumentInformation 的流。对于 [n] 部分,这可能相当于 _T('\00n') ,其中 n 为 1 或 5 或其他 - 它可能是一个控制字符。我在复合文件中看到过。如果要进行调查,请创建 Word 97-2003 文档并另存为 .doc 文件并检查结构。

所以,像 [1]CompObj 这样的东西真的是 _T("\001CompObj")

上面关于文件名中的 [n] 的内容是有根据的/有经验的猜测。

于 2020-10-01T18:10:06.780 回答