Próbuję użyć powłoki Shell32, aby uzyskać rozszerzone właściwości pliku w języku C#.Wyjątek podczas używania powłoki Shell32 w celu uzyskania rozszerzonych właściwości pliku
Mój kod jest następujący.
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);
}
Otrzymuję wyjątek w następujący sposób.
Wiadomość - Nie można przekazać obiektu COM typu "Shell32.ShellClass" do typu interfejsu "Shell32.IShellDispatch6". Ta operacja nie powiodła się, ponieważ wywołanie QueryInterface na komponencie COM interfejsu z IID "{286E6F1B-7113-4355-9562-96B7E9D64C54}" nie powiodło się z powodu następującego błędu: Brak takiego interfejsu obsługiwanego (Wyjątek od HRESULT: 0x80004002 (E_NOINTERFACE)) .
ślad stosu - w System.StubHelpers.StubHelpers.GetCOMIPFromRCW (Przedmiot objSrc, IntPtr pCPCMD, IntPtr & ppTarget, logiczna & pfNeedsRelease) w Shell32.ShellClass.NameSpace (Przedmiot vdir) w PBSWebApplication.Test.Button1_OnClick (Przedmiot sender, EventArgs e) w c: \ Projects \ PBSWebApplication \ PBSWebApplication \ PBSWebApplication \ Test.aspx.cs: line 33 w System.Web.UI.WebControls.Button.OnClick (EventArgs e) at System.Web.UI. WebControls.Button.RaisePostBackEvent (String eventArgument) w System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) w System.Web.UI.Page.RaisePostBa ckEvent (IPostBackEventHandler sourceControl, String eventArgument) na System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) na System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Jak rozwiązać ten problem?
Dzięki.
To dobrze złapać i zbyt dobre rozwiązanie! –