【发布时间】:2009-12-18 05:32:07
【问题描述】:
我们有一个 32 位 .NET 应用程序,它利用 32 位版本的 DSOFile.dll 2.1 从 Office 文档中读取常用属性。这适用于 32 位版本的 Windows,适用于 Office 2003 和 Office 2007 文档。我们现在正在检查我们的应用程序在 64 位环境中的行为,特别是在 64 位 Windows Server 2008 中。
在这个 64 位环境中,DSOFile.dll 可以成功地从 Office 2003 文档(例如 DOC)中读取属性,但是对于 Office 2007 文档(例如 DOCX),所有属性都只返回空字符串,否则会产生错误。
以下是我的观察:
环境:全新安装
阅读 DOC 道具:OK
读取 DOCX 道具:返回空值
环境:已安装 Office 2007 兼容包
阅读 DOC 道具:OK
读取 DOCX 道具:返回空值
环境:Office 2007 兼容包 SP1
阅读 DOC 道具:OK
读取 DOCX 道具:返回空值
环境:已安装 Office 2007
阅读 DOC 道具:OK
阅读 DOCX 道具:错误消息 =“文档不是 OLE 文件”
在 64 位系统上,我使用位于 %SystemRoot%\Syswow64 中的 regsvr32 的副本来注册 dsofile.dll。
任何建议将不胜感激。
【问题讨论】:
-
顺便说一句,您不必担心您使用的是哪个版本的 regsvr32.exe,至少在使用 Windows 7 时是这样。64 位版本将调用 32 位版本,如果传递一个 32 位文件,反之亦然。 (我不确定 Vista 是否做了同样的事情,但 Win 7 确实做到了。非常方便。)
标签: 64-bit office-2007 docx windows-server-2008