Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Excel COM automation via interactive user stops working when user logs off

I have developed a server app that uses Excel 2007 COM automation to convert some xls files. It is started as a service on a Windows Datacenter instance, running under its own user, and I had to change DCOM security settings ("launch as interactive user") to make it work.

The problem is, when I log off (via RDP), it stops working. I log on, it works again.

Has anyone had the same problem?

like image 351
Michael Böckling Avatar asked Nov 20 '10 19:11

Michael Böckling


4 Answers

Server side:

A) Switch "Interactive User" to "This User".

B) "This User" only works after creating these folders :

  • C:\Windows\SysWOW64\config\systemprofile\Desktop
  • C:\Windows\System32\config\systemprofile\Desktop

C) Wait for it... Step B) triggers Windows to auto create:

  • C:\Users\Default\Desktop

Note the definition of "Interactive User" is to piggybacked on whatever is the active logged in user to the server. Thus failure to launch MS Office when no user is active on the server.

I.e., for me, the solution was a hybrid of the already proposed solutions. I used Office 2013 (x86) on Win 2012R2. My issue was instead with Word (to use WordToPDF).

Details for Step B:

  • Login to Server > Start > run DCOMCNFG.EXE (to launch Component Services) > Console Root > Component Services > Computers > My Computer > DCOM Config...
  • Scroll to “Microsoft Word 97 - 2003 Document” or "Microsoft Excel Application" (... i.e., whatever MS Office thing you need to launch)...
  • Right click it and select “properties” > Identity tab > Choose “This User” > enter credentials for some user with access to MS Office on the server. (I used a user with administrator permissions.)

Details for Step C:

  • The wait varies from 5 min to over-night. Optionally, create this folder manually (if the folder does not exist and you're in a rush to complete testing).
like image 137
Jason Avatar answered Nov 09 '22 17:11

Jason


Ok, so I couldn't get Excel to operate without an interactive user, no amount of DCOMCNFG trickery would do. So I simply configured autologin for the user the service is running under (see http://support.microsoft.com/kb/315231 for instructions).

This has the effect that on server bootup, that user will login as an interactive console session. Unlike RDP sessions, this is permanent and makes Excel happy.

Other hints for the poors souls who have to do something similar:

  • create the folder C:\Windows\System32[or SysWOW64]\config\systemprofile\Desktop
  • make sure a default printer is configured for the user the service runs under
  • change DCOMCNFG settings (mmc -32, add "component services") of Excel to run using the interactive account
  • change global DCOM defaults to allow local access, local launch and local activation for the user the service runs under
like image 37
Michael Böckling Avatar answered Nov 09 '22 15:11

Michael Böckling


I've had this issue, and I found that the answer is actually in the DCOM Configuration.

I did the following to resolve the issue:

  1. Open the Excel DCOM Properties
  2. Go to the Identity tab
  3. Select This User
  4. Enter the credentials of someone who has access to Excel

You may need to go to the Security tab and ensure the user you've specified above has appropriate Permissions.

After doing this, I was able to Log Off the Server while still using the Excel COM Automation libraries.

like image 5
Onion-Knight Avatar answered Nov 09 '22 16:11

Onion-Knight


There's a thing called Excel Services which is supposed to make it possible to run Excel as a service using SharePoint, which would allow it to run unattended with nobody logged in.

like image 2
Joel Spolsky Avatar answered Nov 09 '22 17:11

Joel Spolsky