reference a windows shell interface using .net 4.0

心不动则不痛 提交于 2019-11-28 13:31:47

Ok,this is how I got through the problem incase it helps someone

This is how my new code looks like

Type t = Type.GetTypeFromProgID("Shell.Application");

dynamic shell = Activator.CreateInstance(t);

//This is browse through all the items in the folder
var objFolder = shell.NameSpace(@"\\fileshares\Files\test");

foreach (var item in objFolder.Items())
{
    //This is to get the file's comments for each files in the folderitem

    string file_version = objFolder.GetDetailsOf(item, 14).ToString();

     Console.WriteLine(file_version);

}

This script is by combining help from http://nerdynotes.blogspot.com/2008/06/vbnet-shell32-code-compiled-on-vista.html

and

http://foro.h-sec.org/net/problemas-en-net/

The second link is in spanish,I used google translate to make it up in English

Thanks to all who replied to this question

Instead of

Type t = Type.GetTypeFromProgID("Shell.Application");

dynamic shell = Activator.CreateInstance(t);

I used

var shell = (IShellDispatch4) new Shell();

shell.Namespace then works as expected.

Turns out that reference for a shell object defaults to IShellDispatch5, which can't be used in XP or 2003.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!