Automation 在服务器2012 R2中自动化MS Word

Automation 在服务器2012 R2中自动化MS Word,automation,ms-word,ms-office,office-interop,Automation,Ms Word,Ms Office,Office Interop,首先,请不要回复“不要在服务器上自动执行Word”的一般建议,也不要回复“如果确实必须,如何在服务器上自动执行Word”的MS网页链接。我知道这一点 我有一个作为Windows服务运行的进程,它使用.Net OLE互操作来自动化Office(主要是打开和另存为)。这段代码在数百台服务器上可靠地工作了8年,使用了多种Windows和Office版本的组合,包括32位和64位,因此我很高兴该机制是可靠的。到目前为止 对于Server 2012 R2,它可以与PowerPoint和Excel一起使用,

首先,请不要回复“不要在服务器上自动执行Word”的一般建议,也不要回复“如果确实必须,如何在服务器上自动执行Word”的MS网页链接。我知道这一点

我有一个作为Windows服务运行的进程,它使用.Net OLE互操作来自动化Office(主要是打开和另存为)。这段代码在数百台服务器上可靠地工作了8年,使用了多种Windows和Office版本的组合,包括32位和64位,因此我很高兴该机制是可靠的。到目前为止

对于Server 2012 R2,它可以与PowerPoint和Excel一起使用,但无法尝试打开word文档:

System.Runtime.InteropServices.COMException (0x800A16A0): 
  The file appears to be corrupted.
   at Microsoft.Office.Interop.Word.Documents.Open...
我迄今为止的观察结果可能与此相关,也可能与此无关:

  • 在所有文档上都失败
  • 在Windows8.1中运行良好
  • 同样的问题在客户站点和我们的测试环境中都发生过,因此不太可能纯粹是环境问题
  • 我的应用程序正在使用.NET3.5
  • 代码是针对2003互操作程序集链接的(显然,程序集绑定重定向支持更高版本的office)
  • 我们在office 2013中试用了32位和64位,结果相同,但没有试用早期版本的office
  • 无论服务是以LocalSystem还是标准用户帐户运行,它都会失败
  • 如果我们在前台运行服务进程(即双击可执行文件),问题就不会发生
显然,我还有一些事情要调查,但我很想知道是否有其他人见过这个特定的问题,即使你还没有解决它。请注意,办公自动化有许多困难和问题,因此除非你的症状与我的症状非常相似,否则你可能不会有同样的问题。

我们(我的公司)目前面临着同样的问题,这几乎是你问题的复制品。我们已经完成了这一领域的广泛测试,我现在正在与MS支持工程师会谈,试图找到一个解决办法

不幸的是,他们不希望我们这样做,我认为他们已经加强了Windows Server 2012的安全性,以阻止人们这样做

我们尝试了哪些可以帮助您的方法:

  • 服务器2012 | Word 2007 |失败
  • 服务器2012 | Word 2010 |失败
  • 服务器2012 | Word 2013 |失败
  • 客户端8.1 | Word 2013 |失败
  • 我们的问题源于这样一个事实:我们运行word的用户与本地系统用户(即您登录计算机时的用户类型)无关,Windows将不再允许这种情况发生

    我和微软工程师正在“愚弄”windows,使其认为它正在以本地服务的形式运行Word,但微软工程师说,这是一个很长的路要走,到目前为止,我们所尝试的一切都失败了。看起来不太好


    对不起,我没有答案给你,但我想知道你并不孤单是件好事吧

    我对MsOffice 2010(32位)和Windows Server 2012R2(64位)也有同样的问题。Word、Excel、Powerpoint不能与localAdmin一起使用

    我创建了文件夹C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\INetCac‌​他和安迪一样,现在它工作得很好


    谢谢安迪:)

    这里也有同样的问题,但现在已经完全解决了

    我有一个Word 2013,它与Windows 2012 R2 Server一起运行,运行在一个服务进程中,无需启动交互式会话即可完成我想要的一切。我使用它将文档转换为PDF文件。在Windows服务中,我托管了一个WCF服务

    创建文件夹:(根据您使用的
    x86
    x64
    位版本,将
    System32
    替换为
    Syswow64

    C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\INetCac‌他 C:\Windows\System32\config\systemprofile\Desktop

    最后也是最重要的一步

    Start - run - dcomcnfg.exe
    
    打开属性->组件服务-DCOM配置-Microsoft Word 97-2003文档(请注意,此处未提及版本,但这并不重要Office 2013将使用此版本作为DCOM配置)


    打开标签标识。将运行配置为本地管理员帐户。我做了一些测试,Word 2013即使没有为用户启动交互会话,也能正常工作。

    感谢所有的帮助和贡献者。在创建INetCache文件夹之后,它对我来说很有用。我已经做了以下工作,以便在没有活动会话(WS2012 R2/MS Office 2013 64x)的情况下让一切正常工作:

  • 创建本地管理员用户并登录以设置任何打印机(打印到文件)以及默认word选项
  • 将DCOM配置标识指向创建的本地管理员用户
  • 创建以下文件:C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Microsoft\Windows\INetCac‌​他

  • 对于某些计算机,您需要运行“mmc comexp.msc/32”来设置MS Word的DCOM设置。我发现,当只安装了32位版本的Word时,我们需要这样做

    我的服务使用MS Word实现数据合并和连接功能。 我正在Windows Server 2012 R2上使用Word 2016。 我的日志显示Word已打开,但打开文档时抛出错误

    我首先创建了所有建议的4个文件夹:

    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

    只有在创建最后一个目录后,问题才得以解决

    我没有使用DCOM配置;我的应用程序使用具有管理权限的用户帐户;不需要使用带有“与桌面交互”选项的LocalSystem帐户