C 从硬盘ole二进制文件中提取对象

C 从硬盘ole二进制文件中提取对象,c,extract,ole,lotus,C,Extract,Ole,Lotus,我对LotusNotes文档中嵌入的OLE对象有一个特殊的问题 用户已将f.e.Word或Excel文档附加为Lotus Notes文档中的OLE对象,我需要将这些原始文档作为文件附件从OLE中获取,以便在其宿主应用程序中打开 使用LotusNotesCAPI,我成功地将OLE对象分离到HDD。 问题是Word文档嵌套在Word.document.8或Word.document.12目录下的OLE二进制文件中。仅将OLE二进制文件重命名为doc或docx不起作用 这就是为什么我编写了Java O

我对LotusNotes文档中嵌入的OLE对象有一个特殊的问题

用户已将f.e.Word或Excel文档附加为Lotus Notes文档中的OLE对象,我需要将这些原始文档作为文件附件从OLE中获取,以便在其宿主应用程序中打开

使用LotusNotesCAPI,我成功地将OLE对象分离到HDD。 问题是Word文档嵌套在Word.document.8或Word.document.12目录下的OLE二进制文件中。仅将OLE二进制文件重命名为doc或docx不起作用

这就是为什么我编写了Java OLE包来读取二进制文件并提取文档。 这是可行的,但也有缺点

我必须解析OLE类名,如果它是Word.Document.8,我需要编写代码,手动从Word.Document.8目录中提取所有流,并将它们保存为新的.doc OLE对象,以便Word正确打开它

这仅仅对于Office文档来说并不难,但所有类型的东西都可以嵌入OLE中,我无法涵盖所有可能的内容

是否有C api函数可以从OLE二进制文件中提取嵌入对象原始文件名不重要但扩展名重要? 双击OLE对象时,Lotus或Word是如何工作的? 它必须以某种方式重建嵌入的文档? 我想用同样的方法:-


谢谢您的帮助。

尝试自动注释将嵌入对象复制到剪贴板,然后从剪贴板获取CF_嵌入对象格式,这与将OLE项拖动到Windows资源管理器以创建废弃文件的方式类似

参考和有用的页面:


[]

对于在C API中提取文件,我将看一看NSFNoteCipherExtractFile函数和NSFNoteCipherDecrypt。如果使用8.x或更高版本。

这与嵌入式系统编程无关。重新标记这将不起作用:当Shell创建废弃文件时,它将数据表示为嵌入对象。当废料被转移到另一个容器时,它作为嵌入对象被转移,即使它被返回到原始文档。您的应用程序负责确定废料中包含的数据格式,并在必要时将数据恢复为原始格式。看来我会得到和现在一样的OLE二进制文件。