service fail to save file to hard drive on windows server 2008

Posted on 2008-10-31
Last Modified: 2008-11-24
I have a windows service that will get data from database and create excel spreadsheet on hard drive. now this service is required to run on windows server 2008, however, it failed when call saveas method. the error is "System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC"
However, I also have a test windows form app which use exactly same code, and I can run that app successfully on windows server 2008, create/read the spreadsheet just fine.
I'm wondering if there's some new restriction for windows service? how can i remove the restriction so my service can save the file.
Question by:dragonemp
  • 6
  • 4

Expert Comment

ID: 22866556
Setup a user and run the service with this account.  Make sure the account has rights on the folder where the spreadsheet is being saved and on the file itself.  

Author Comment

ID: 22867822
it's not folder permission problem since I have given everyone full control on the folder for testing purpose.....
it has something to do with the way windows server 2008 handles service/DCOM, because that's the only difference between my test app and the service itself.

Expert Comment

ID: 22868892
Have you done this
Enabling DCOM in Windows Server 2008
In order to make DCOM applications work in Windows Server 2008 you need to do two things. Installing the Application role is not needed (but it does add the COM+ network access as in 1) below).

Allow "COM+ network access" in firewall rules (type firewall.cpl from a command prompt and on the left you'll see the setting). COM+ is somewhat of a The out-of-box configuration for Windows Server 2008 the Network Access Protection Agent start-mode is manual. Once I changed the start mode for that service and restarted the server the DCOM error was corrected.since it is also for DCOM. COM+ Network Access is a preconfigured program in the exception list that you can just check off.
Add your DCOM server to the list of program exceptions in the firewall

Check permissions in

The out-of-box configuration for Windows Server 2008 the Network Access Protection Agent start-mode is manual. Change the start mode for this service and restart the server.

Author Comment

ID: 22869276
I disabled windows firewall from begining so that's not the issue.
and I already have application server role installed.
for the network access protection agent service, I fail to see the relationship of this and the issue, but I started it anyway, still no luck.

Expert Comment

ID: 22884341
Can you post you code that produces the ss
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline


Author Comment

ID: 22890325
remember: same code works on a windows form app, so it must have something to do with service/DCOM permission
string xPath = "/root/" + templateName.Replace(" ","") ;

				XmlNode templateTypeNode = xmlDoc.SelectSingleNode(xPath) ;

				excelApp = new Excel.ApplicationClass() ;

				excelApp.Visible = true ;

				excelApp.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable ;

				//Creating Excel workbooks and worksheets

				_workBook = (Excel.Workbook)(excelApp.Workbooks.Add(missing)) ;

				_workSheet = (Excel.Worksheet)_workBook.ActiveSheet ;

				_workSheet.Name = templateName.Replace (" ", "") ;

				ValidationDataWorkSheet = (Excel.Worksheet)(_workBook.Worksheets[2]) ;

				ListRelationsWorkSheet = (Excel.Worksheet)(_workBook.Worksheets[3]) ;

				ValidationDataWorkSheet.Name = "Validation Data" ;

				ListRelationsWorkSheet.Name = "Validation List Relations" ;

				//Getting and adding column names to cells

				ColumnsToAdd (templateTypeNode) ;

				//Formatting added data in cells

				_workSheet.get_Range ("A1","B1").EntireRow.Font.Bold= true ;

				_workSheet.get_Range ("A1","B1").EntireRow.Font.Color = Color.DarkRed.ToArgb() ;

				_workSheet.get_Range ("A1","B1").EntireRow.Interior.ColorIndex = 35 ;

				ValidationDataWorkSheet.get_Range ("A1", missing).AddComment (MetadataConfigName) ;

				//Freezing panes

				excelWin = (Excel.Window)(excelApp.ActiveWindow) ;

				excelWin.SplitRow = 1 ;

				excelWin.FreezePanes = true ;


				//Saving the workbook

				excelApp.Visible = false ;

				excelApp.UserControl = false ;

				if ( File.Exists(excelPhysicalFilePath) )


					File.Delete(excelPhysicalFilePath) ;


				_workBook.SaveAs(excelPhysicalFilePath,Excel.XlFileFormat.xlWorkbookNormal,null,null,false,false,Excel.XlSaveAsAccessMode.xlExclusive,false,false,null,null,null) ;

Open in new window


Author Comment

ID: 22890496
the error is come from this line:
_workBook.SaveAs(excelPhysicalFilePath,Excel.XlFileFormat.xlWorkbookNormal,null,null,false,false,Excel.XlSaveAsAccessMode.xlExclusive,false,false,null,null,null) ;

and if i use _workBook.SaveCopyAs(); it works.... this could be a work around for save potion, however, the _workBook.Open() has same issue.

so I'm running out of ideas, can somebody point me to right direction what could be wrong? this has to be some permission issue but I just don't see which one.

Expert Comment

ID: 22893161
Sorry if I am barking up the wrong tree, but does you code work if the files doesn;t already exist.  But fail if you try and delete it first before saving?
The ConflictResolution you could try to set to:
xlLocalSessionChanges The local user's changes are always accepted

Author Comment

ID: 22897223
no, it's not related to file existance at all, no matter file exist or not(and it's almost impossibly for the file to exist because our naming system) it works on xp/server 2003, it works as windows form app on server 2008, only time it doesn't work is when it runs from windows service on server 2008 - no matter file exist or not.

Accepted Solution

dragonemp earned 0 total points
ID: 22999780
called microsoft, its dev support said server side office automation is not recommended and it can and will stop working at any time or after any service pack/os upgrade, they suggest me to use open xml. So that'll be my solution.

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Excel VBA - copying formats 7 22
GPO Delegation 4 16
VMware Black Screen 13 31
MIN, using ARRAY 4 17
Possible fixes for Windows 7 and Windows Server 2008 updating problem. Solutions mentioned are from Microsoft themselves. I started a case with them from our Microsoft Silver Partner option to open a case and get direct support from Microsoft. If s…
Restoring deleted objects in Active Directory has been a standard feature in Active Directory for many years, yet some admins may not know what is available.
The viewer will learn how to create two correlated normally distributed random variables in Excel, use a normal distribution to simulate the return on different levels of investment in each of the two funds over a period of ten years, and, create a …
Graphs within dashboards are meant to be dynamic, representing data from a period of time that will change each time the dashboard is updated with new data. Rather than update each graph to point to a different set within a static set of data, t…

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now