Я пытаюсь использовать Shell32 для получения расширенных свойств файла в С#.
Мой код для этого выглядит следующим образом.
var file = FileUpload1.PostedFile;
List<string> arrHeaders = new List<string>();
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 < short.MaxValue; i++)
{
string value = rFolder.GetDetailsOf(rFiles, i).Trim();
arrHeaders.Add(value);
}
Я получаю исключение следующим образом.
Сообщение. Невозможно передать COM-объект типа "Shell32.ShellClass" в тип интерфейса "Shell32.IShellDispatch6". Эта операция завершилась неудачно, потому что вызов QueryInterface для COM-компонента для интерфейса с IID '{286E6F1B-7113-4355-9562-96B7E9D64C54} завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).
Трассировка стека - на System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr и ppParget, Boolean & pfNeedsRelease) в Shell32.ShellClass.NameSpace(Object vDir) в PBSWebApplication.Test.Button1_OnClick (отправитель объекта, EventArgs e) в c:\Projects\PBSWebApplication\PBSWebApplication\PBSWebApplication\Test.aspx.cs: строка 33 в System.Web.UI.WebControls.Button.OnClick(EventArgs e) в System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) в System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) в System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) в System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Как это исправить?
Спасибо.