使用.net4.0引用Windowsshell接口我使用如下代码引用shellDLLTypet=Type.GetTypeFromProgID("Shell.Application");Shells=(Shell)Activator.CreateInstance(t);Console.WriteLine("成功");控制台.ReadLine();它在我的Windows7开发机器上运行良好。但是当我尝试在Win2003服务器上运行exe时,我得到了这个异常无法将类型为“System.__ComObject”的COM对象转换为接口类型“Shell32.Shell”。此操作失败,因为IID为“{866738B9-6CF2-4DE8-8767-F794EBE74F4E}”的接口的COM组件上的QueryInterface调用因以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)).我从C#那里得到了一些帮助:引用了一个windowsshell接口,但没有运气。我正在使用MicrosoftShell控件和自动化引用来引用shell,这是Interop.Shell32dll如果有人可以指导那将非常有帮助。好吧,这就是我解决问题的方法,因为它可能会对某些人有所帮助,这就是我的新代码的样子Typet=Type.GetTypeFromProgID("Shell.Application");动态shell=Activator.CreateInstance(t);//这是浏览文件夹中的所有项目varobjFolder=shell.NameSpace(@"\filesharesFilestest");foreach(variteminobjFolder.Items()){//这是获取folderitem中每个文件的文件注释stringfile_version=objFolder.GetDetailsOf(item,14).ToString();Console.WriteLine(file_version);}这个脚本是通过http://nerdynotes.blogspot.com/2008/06/vbnet-shell32-code-compiled-on-vista.html结合帮助。和http://foro.h-sec.org/net/problemas-en-net/第二个链接是西班牙语,我使用谷歌翻译将其添加为英语感谢所有回答这个问题的人看看这个:http://nerdynotes.blogspot.com/2008/06/vbnet-shell32-code-compiled-on-vista.html我认为这是同样的问题。而不是Typet=Type.GetTypeFromProgID("Shell.Application");动态shell=Activator.CreateInstance(t);我使用了varshell=(IShellDispatch4)newShell();然后shell.Namespace按预期工作。原来对shell对象的引用默认是IShellDispatch5,不能在XP或2003中使用。以上是C#学习教程:使用.net4.0引用Windowsshell界面共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
