title: Error when trying to open PowerPoint programmatically
body: <p>I have a method that uses Microsoft.Office.Interop.PowerPoint.Application interface to convert PowerPoint presentation slides into a jpeg files. In a service application that runs on Windows 2008 server it works without any issues.</p>
  
  <p>Now however, I'm writing a new web application that uses the same process and the degubber chokes on the Presentation.Open call wiht an error: "PowerPoint could not open file".</p>
  
  <p>My environment is Win 7, VS 2010. I'm using impersonation with a domain account that has admin privileges. The PowePoint file I'm trying to open is in the c:\temp folder which has NTFS rights of "everyone" set to full; file is NOT read-only, I can manually opent the file using a similar account as the domain account I'm using for impersonation. I don't know what the problem is. Can someone suggest what's going on?</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.IO;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  
  using AjaxControlToolkit;
  using Microsoft.Office.Core;
  using Microsoft.Office.Interop.PowerPoint;
  using System.Threading;
  
  
  public partial class _Default : System.Web.UI.Page
  {
    private static int folderExtension;
    private static string tempSavePath,
                          fileName;
  
    protected void Page_Load(object sender, EventArgs e)
    {
  
    }
  
    private void Page_Error(object sender, EventArgs e)
    {
      Random r = new Random();
      int eventID = r.Next(1, 65535);
      Exception objErr = Server.GetLastError().GetBaseException();
      string err = "\nPage_Error Event" +
              "\n\nError in: " + Request.Url.ToString() +
              "\n\nError Message:" + objErr.Message.ToString() +
              "\n\nStack Trace:" + objErr.StackTrace.ToString() +
              "\n";
      uploadResult.Text = err.ToString();        
    }
  
    protected void AsyncFileUpload1_click(object sender, AsyncFileUploadEventArgs e)
    {
       // Temporary folder where the presentation file is uploaded.
       tempSavePath = @"c:\temp\";
  
       // Checks if there is a file present for uploading.
       if (AsyncFileUpload1.HasFile)
       {
          fileName = AsyncFileUpload1.FileName;
  
          try
          {
              AsyncFileUpload1.SaveAs(tempSavePath + fileName);
          }
          catch (Exception ex)
          {
              throw ex;
          }
          finally
          {
              ConvertToJpegs();
          }
       }
       else
       {
          uploadResult.Text = "No file to upload.";
       }
   }
  
   // Converts the presentation slides into individual jpeg files.
   protected void ConvertToJpegs()
   {
      Microsoft.Office.Interop.PowerPoint.Application app = new Microsoft.Office.Interop.PowerPoint.Application();
      Microsoft.Office.Core.MsoTriState ofalse = Microsoft.Office.Core.MsoTriState.msoFalse;
      Microsoft.Office.Core.MsoTriState otrue = Microsoft.Office.Core.MsoTriState.msoTrue;
  
      Presentation pptPresentation = null;
  
      try
      {
       **&gt;&gt;&gt; It break here with the ".Open" call &lt;&lt;&lt;**   
          pptPresentation = app.Presentations.Open(tempSavePath + fileName, ofalse, ofalse, ofalse);
          pptPresentation.SaveAs(tempSavePath + ".", PpSaveAsFileType.ppSaveAsJPG, ofalse);
          Thread.Sleep(500);
      }
      catch (Exception ex1)
      {
          throw ex1;
      }
      finally
      {
          pptPresentation.Close();
      }
    }
  }
  </code></pre>