2010-11-20 136 views
5

我开发了一个使用Excel 2007 COM自动化转换某些xls文件的服务器应用程序。它作为Windows Datacenter实例上的服务启动,并在其自己的用户下运行,并且必须更改DCOM安全设置(“以交互式用户身份启动”)才能使其工作。当用户注销时,Excel COM自动停止工作

问题是,当我注销(通过RDP)时,它停止工作。我登录,它再次运作。

有没有人有同样的问题?我很高兴现在有任何帮助。

回答

7

好了,我不能让Excel的在没有交互式用户的情况下运行,不会有大量的DCOMCNFG欺骗行为。所以我简单地为运行服务的用户配置了autologin(有关说明,请参阅http://support.microsoft.com/kb/315231)。

这具有在服务器启动时,该用户将作为交互式控制台会话登录的效果。与RDP会话不同,这是永久性的,并使Excel很高兴。

  • 创建文件夹C:\ Windows \ System32下[或SysWOW64中] \设置\ systemprofile \桌面
  • 确保默认打印机

    谁拥有做类似的事情在普灵魂其他提示

  • 更改Excel的DCOMCNFG设置(mmc -32,添加“组件服务”)以使用交互式帐户运行
  • 更改全局DCOM默认设置为允许本地访问,本地启动和本地访问为用户激活服务e运行于

祝你好运!

+0

你的意思是执行你提到的“其他提示”模拟一个永远在线的交互式用户吗? – mateolargo 2011-11-01 01:39:00

+0

使用自动登录是一种安全风险。你如何以这种方式保护你的服务器? – 2017-01-04 19:53:43

2

有一个叫Excel Services件事应该使人们有可能使用SharePoint运行Excel作为一种服务,这将允许它与任何人登录自动运行。

+0

嗨乔尔,感谢您的回复! :)当我调试时,我实际上已经在想你了,注意到Excel比Word或Powerpoint更难自动化,需要登录的交互式用户来操作。你可能知道为什么,在内部工作。我知道Sharepoint提供的MS Office服务,但不幸的是,我正在为SharePoint的直接竞争对手开发此服务。^_ ^我会发布我在下面找到的解决方案。干杯! – 2010-11-21 23:11:29

1

我有这个问题,我发现答案其实是在DCOM Configuration.

我做了以下解决这个问题:

  1. 打开Excel DCOM属性
  2. 围棋到Identity选项卡
  3. 选择This User
  4. 输入有权访问Excel的用户的凭据

您可能需要转到Security选项卡,并确保您在上面指定的用户具有适当的权限。

完成此操作后,我仍然可以在使用Excel COM Automation库的同时注销服务器。

0

如果这是运行Excel中的帐户管理员,那么这将工作:

对于64位(x64),在该文件夹:C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \桌面 为32位(x86),创建该文件夹:C:\ WINDOWS \ system32 \设置\ systemprofile \桌面 否则,要解决此问题,请按照下列步骤操作:

  1. 登录到你的服务器作为管理员
  2. 转到“开始“ - >”运行“并输入”MMC comexp.msc/32“
  3. 转到Microsoft Excel应用程序的属性,在标识下将其更改为来自启动用户的交互式用户(默认设置)。
  4. 转到Microsoft Office Excel 2007工作簿的属性,在标识下,将其更改为来自启动用户的交互用户(默认设置)。
  5. 转到安全选项卡Microsoft Excel应用程序,并选择自定义 “启动和激活权限”,并添加帐户(在其下运行Excel)到它,并给它“本地启动”和“本地激活”权限
  6. 转到安全选项卡用于Microsoft Office Excel 2007工作簿,并选择自定义 “访问权限”,并添加帐户(在其下运行Excel)到它,并给它“本地控制”权限
0

服务器端:

A)将“交互式用户”切换为“此用户”

  • C:\的Windows \ Syswow64资料\ CONFIG \ systemprofile \桌面
  • C:\ WINDOWS \ system32 \设置\ systemprofile

    B) “这个用户” 创建这些文件夹后只能\桌面

C)等待...步骤B)触发的Windows自动创建:

  • C:\ Users \ Default \ Desktop

请注意“交互式用户”的定义是捎带在任何活动的登录用户到服务器上。因此,当没有用户在服务器上处于活动状态时,无法启动MS Office。

也就是说,该解决方案是已经提出的解决方案的混合体。我在Win 2012R2上使用Office 2013(x86)。我的问题是用Word(使用WordToPDF)。

详细的步骤B:

  • 登录到服务器>开始>运行DCOMCNFG.EXE(发射组件服务)>控制台根>组件服务>计算机>我的电脑> DCOM配置...
  • 滚动到“Microsoft Word 97 - 2003文档”或“Microsoft Excel应用程序”(即,无论您需要启动MS Office的任何东西)...
  • 右键单击它,然后选择“属性”>“标识”选项卡>选择“此用户”>为服务器上的MS Office访问某些用户输入凭据。 (I使用具有管理员权限的用户。),用于步骤C

详细说明:

  • 等待变化从5分钟到过夜。或者,手动创建此文件夹(如果该文件夹不存在,并且您急于完成测试)。