相关疑难解决方法(0)

使用Shell32获取File扩展属性时出现异常

我试图使用Shell32在c#中获取扩展文件属性.

我的代码如下.

        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);
        }
Run Code Online (Sandbox Code Playgroud)

我得到如下例外情况. 在此输入图像描述

消息 - 无法将"Shell32.ShellClass"类型的COM对象强制转换为接口类型"Shell32.IShellDispatch6".此操作失败,因为对IID为"{286E6F1B-7113-4355-9562-96B7E9D64C54}"的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) .

堆栈跟踪 - 位于Shell32.ShellClass.NameSpace(Object vDir)的System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc,IntPtr pCPCMD,IntPtr&ppTarget,Boolean&pfNeedsRelease),位于c:中的PBSWebApplication.Test.Button1_OnClick(Object sender,EventArgs e)\Projects\PBSWebApplication\PBSWebApplication\PBSWebApplication\Test.aspx.cs:System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)at System.Web.UI.WebControls.Button.OnClick(EventArgs e)的第33行System.Web.UI.Page.RaisePostBackEvent上的System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)中的System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) System.Web.UI.Page.ProcessRequestMain上的(NameValueCollection postData)(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)

如何解决这个问题?

谢谢.

.net c# asp.net

14
推荐指数
3
解决办法
8463
查看次数

查找是否安装了第三方软件,安装路径和EXE的名称?

我正在用C#和MATLAB制作一个软件,调用另一个软件(CMG)进行一些处理.我的问题是我在我的程序中放置的软件地址只在我的个人计算机上正确,而不是在客户的计算机上(我不知道在他们的计算机上通往CMG软件的路径是什么).

我如何提供地址的一般形式,以使其适用于每台计算机?

以下是我从MATLAB软件调用的路径:

C:\Program Files (x86)\CMG\STARS\2011.10\Win_x64\EXE\st201110.exe
Run Code Online (Sandbox Code Playgroud)

如您所见,它位于驱动器C中,版本为2011.10.因此,如果客户的版本是其他内容并且它安装在其他驱动器上,则此路径没有意义.

c# windows matlab path pathname

11
推荐指数
1
解决办法
4360
查看次数

如何让用户删除文件?

我需要知道c#代码中哪个用户在文件系统中删除了文件.只有一个想法是使用审计,但它似乎很慢......

c# filesystems

6
推荐指数
1
解决办法
2379
查看次数

标签 统计

c# ×3

.net ×1

asp.net ×1

filesystems ×1

matlab ×1

path ×1

pathname ×1

windows ×1