IIS上win32com Dispatch的权限提升

时间:2012-11-11 10:07:21

标签: django iis windows-server-2008 dcom win32com

我正在尝试使用win32com和Microsoft Excel在IIS上执行一些批处理操作。 我想用DCOM打开一个excel文件,操作它然后将其保存为pdf。 以下代码在我的开发机器上运行正常(64位Windows 7)。

# views.py
class ConvertFileView(View):
    def get(self,request):
        """Convert the selected file"""
        output = "c://docs/somefile.pdf"
        input = "c://docs/input.xlsx"

        #Open excel and open input.xlsx
        excel = win32com.client.gencache.EnsureDispatch('Excel.Application')
        excel.DisplayAlerts = False
        excel.Visible = False
        workbook = excel.Workbooks.Open(input)

        # File manipulation here
        workbook.ExportAsFixedFormat(Type=0,Filename=output)
        excel.Quit()
        del excel

        return HttpResponse("Done")

但是,当我通过IIS加载网页时,会出现以下错误。

com_error at /converter/convert/114/ 
(-2147024891, 'Access is denied.', None, None)

Traceback:
C:\GoogleDrive\websites\...\python\apps\converter\views.py in get
    141. excel = win32com.client.gencache.EnsureDispatch('Excel.Application')
C:\python27\lib\site-packages\win32com\client\__init__.py in Dispatch 
    95. dispatch, userName =  dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
C:\python27\lib\site-packages\win32com\client\dynamic.py in _GetGoodDispatchAndUserName 
    114. return (_GetGoodDispatch(IDispatch, clsctx), 
C:\python27\lib\site-packages\win32com\client\dynamic.py in _GetGoodDispatch 
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)

这在我的开发机器上运行良好。 在Windows Server 2008上通过IIS加载网页时会发生此错误。 我假设python没有足够的权限在IIS上启动excel。 无论如何我可以给python / DCOM权限来运行excel吗?

0 个答案:

没有答案