Excel COM automation via interactive user stops working when user logs off
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).
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:
- Open the Excel DCOM Properties
- Go to the
Identity
tab - Select
This User
- 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.
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.
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