首先,请不要回复通用建议,不要在服务器上自动化Word,也不要回复MS网页上的链接,如果你真的必须在服务器上自动化字。 。我知道这一点。
我有一个作为Windows服务运行的进程,并使用.Net OLE interop自动化Office(主要是Open和SaveAs)。这段代码在使用Windows和Office版本(32位和64位)的许多组合的数百台服务器上可靠地工作了8年,所以我很高兴这种机制是可靠的。到目前为止......
使用Server 2012 R2,它可以与PowerPoint和Excel配合使用,但无法尝试打开word文档:
System.Runtime.InteropServices.COMException (0x800A16A0):
The file appears to be corrupted.
at Microsoft.Office.Interop.Word.Documents.Open...
到目前为止我的观察结果可能相关或不相关:
显然,我仍然有需要调查的事情,但有兴趣听到其他人是否已经看到这个具体问题,即使你还没有解决它。请注意办公室自动化有很多困难和问题,所以除非你的症状与我的非常相似,否则你可能不会遇到同样的问题。
答案 0 :(得分:14)
这里的问题相同,但现在已经完全解决了。
我将Word 2013与运行在服务流程中的Windows 2012 R2 Server结合使用,可以执行我想要的所有操作,而无需启动交互式会话。我用它来将文档转换为PDF文件。在Windows服务中,我托管了一个WCF服务。
创建文件夹:(根据您使用System32
或Syswow64
位版本,将x86
替换为x64
C:\ WINDOWS \ system32 \设置\ systemprofile \应用程序数据\本地\微软\的Windows \ INetCache C:\的Windows \ system32 \设置\ systemprofile \桌面
最后也是最重要的一步!
Start - run - dcomcnfg.exe
打开属性 - >组件服务 - DCOM配置 - Microsoft Word 97 - 2003文档(请注意,此处未提及该版本,但无关紧要,Office 2013将使用此作为DCOM配置)
打开标签标识。将运行配置为本地管理员帐户。我做了一些测试即使没有为用户启动交互式会话,Word 2013也能正常工作。
答案 1 :(得分:4)
我们(我的公司)目前面临同样的问题,它几乎是您问题的副本。我们已经完成了围绕这个领域的广泛测试,现在我正在与MS支持工程师进行谈判,试图找到一个解决方案。
不幸的是,这是他们不希望我们做的事情,我认为他们已经加强了Windows Server 2012上的安全性以阻止人们这样做。
我们尝试过哪些应该对您有所帮助:
我们的问题源于这样一个事实:我们正在与一个与LOCAL系统用户无关的用户(即登录到机器时拥有的用户类型)运行时,Windows将不允许这样做发生了。
我自己和MS工程师正在研究" Fooling" Windows认为它正在运行Word作为本地服务,但MS工程师表示这是一个很好的长镜头,到目前为止我们所尝试的一切都导致了失败。它看起来并不好。
对不起,我没有给你答案,但我想很清楚你并不孤单?
答案 2 :(得分:1)
我遇到了与MsOffice 2010(32位)和Windows Server 2012R2(64位)相同的问题。 Word,Excel,Powerpoint不能与localAdmin合作。
我创建了像Andy那样的文件夹 C:\ Windows \ System32 \ config \ systemprofile \ AppData \ Local \ Microsoft \ Windows \ INetCac ,它现在完美无缺!
谢谢安迪:)
答案 3 :(得分:1)
我的服务使用MS Word进行数据合并和连接功能。 我在Windows Server 2012 R2上使用Word 2016。 我的日志说Word已打开但是文档打开时会出错。
我首先创建了所有建议的4个文件夹:
C:\ WINDOWS \ system32 \设置\ systemprofile \应用程序数据\本地\微软\的Windows \ INetCac他 C:\ WINDOWS \ system32 \设置\ systemprofile \桌面 C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \应用程序数据\本地\微软\的Windows \ INetCac他 C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面
仅在创建最后一个目录后才解决问题。
我没有使用过DCOM配置;我的应用程序使用具有管理权限的用户帐户;没有必要使用LocalSystem帐户"与桌面交互"选项。
谢谢。
答案 4 :(得分:0)
感谢所有帮助OP和贡献者。创建INetCache文件夹后,它为我解决了。我已经完成了以下操作,以便在没有活动会话的情况下使所有内容正常工作(WS2012 R2 / MS Office 2013 64x):
答案 5 :(得分:0)
对于某些机器,您需要运行“mmc comexp.msc / 32”来设置MS Word的DCOM设置。我发现只安装32位版本的Word时我们需要这样做。
答案 6 :(得分:0)
为此,我们已经有了一个可行的解决方案。但是,当我们尝试在完全更新的2012 RTM R2服务器上安装该解决方案时,该解决方案就失败了。在2016服务器上,我们没有看到此问题。
为了使其在Windows 2012 R2 Server上以及在非交互式桌面环境中再次运行:
请遵循以下步骤!:
要在Windows 2012 Sever R2上解决此问题的措施,Windows 2012 Sever R2已由Windows更新完全更新:
开始-运行-mmc comexp.msc / 32
展开:组件服务–计算机–我的计算机– DCOM配置
搜索:Microsoft Word 97 – 2003文档
RMC –属性–转到选项卡:标识 从“启动用户”设置为“此用户”。 使用曾经登录到服务器计算机并至少在交互式桌面中打开过Word一次的“本地管理员帐户”。
最后一步:重新启动服务器!并使用新的文档名称再次测试您的解决方案。
就像在其他答案中所说的那样,这些文件夹必须由主叫用户(本地系统)或您在上一步中配置的用户正常创建和访问。
C:\ Windows \ System32 \ config \ systemprofile \ AppData \ Local \ Microsoft \ Windows \ INetCac C:\ Windows \ System32 \ config \ systemprofile \ Desktop C:\ Windows \ SysWow64 \ config \ systemprofile \ AppData \ Local \ Microsoft \ Windows \ INetCac C:\ Windows \ SysWow64 \ config \ systemprofile \ Desktop
答案 7 :(得分:0)
我一直在努力解决这个问题,并尝试了许多解决方案。我最终通过将标识更改为“此用户”解决了此问题。然后,我使用了我的应用程序池所使用的帐户,还不得不将该用户添加到“管理员”组。
Ph ...希望这也能对某人有所帮助。