title: Exception when using Shell32 to get File extended properties
body: <p>I am trying to use Shell32 to get extended file properties in c#. </p>
  
  <p>My code for this is as follows.</p>
  
  <pre><code>        var file = FileUpload1.PostedFile;
  
          List&lt;string&gt; arrHeaders = new List&lt;string&gt;();
  
          Shell shell = new ShellClass();
  
          //Exception is thrown at next line
          Folder rFolder = shell.NameSpace(Path.GetDirectoryName(file.FileName));
          FolderItem rFiles = rFolder.ParseName(Path.GetFileName(file.FileName));
  
          for (int i = 0; i &lt; short.MaxValue; i++)
          {
              string value = rFolder.GetDetailsOf(rFiles, i).Trim();
              arrHeaders.Add(value);
          }
  </code></pre>
  
  <p>I am getting exception as follows.
  <img src="https://i.stack.imgur.com/ClIAu.png" alt="enter image description here"></p>
  
  <p>Message - Unable to cast COM object of type 'Shell32.ShellClass' to interface type 'Shell32.IShellDispatch6'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{286E6F1B-7113-4355-9562-96B7E9D64C54}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).</p>
  
  <p>Stack Trace -    at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr&amp; ppTarget, Boolean&amp; pfNeedsRelease)
     at Shell32.ShellClass.NameSpace(Object vDir)
     at PBSWebApplication.Test.Button1_OnClick(Object sender, EventArgs e) in c:\Projects\PBSWebApplication\PBSWebApplication\PBSWebApplication\Test.aspx.cs:line 33
     at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
     at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
     at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
     at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
     at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)</p>
  
  <p>How to fix this?</p>
  
  <p>Thanks.</p>