【发布时间】:2014-10-30 06:00:07
【问题描述】:
我试图使用 Shell 从文件中获取元数据。我正在使用 MVC5 和 Windows 8 操作系统。这是下面的代码。
代码
public JsonResult Ind(string file)
{
List<string> arrHeaders = new List<string>();
string filename = Path.GetFileName(file);
Shell shell = new ShellClass();
Folder rFolder = shell.NameSpace(file);
FolderItem rFiles = rFolder.ParseName(filename);
for (int i = 0; i < short.MaxValue; i++)
{
string value = rFolder.GetDetailsOf(rFiles, i).Trim();
arrHeaders.Add(value);
}
return Json(arrHeaders, JsonRequestBehavior.AllowGet);
}
当我尝试运行上述代码时,我收到错误无法将“Shell32.ShellClass”类型的 COM 对象转换为接口类型“Shell32.IShellDispatch6”。此操作失败,因为 IID 为“{286E6F1B-7113-4355-9562-96B7E9D64C54}”的接口的 COM 组件上的 QueryInterface 调用失败,原因是以下错误:不支持此类接口(HRESULT 异常:0x80004002 (E_NOINTERFACE)) .
还有其他更好的解决方案来读取不同文件格式的元数据吗?请给我任何建议。我会很感激你的。
谢谢
【问题讨论】:
-
此代码的上下文在问题中不可见。但考虑到错误,它在 MTA 中的工作线程上运行的可能性很高。 IShellDispatch6 没有代理,需要一个 STA 线程。
标签: c#-4.0