在C#中列举“Godmode”

在C#中列举“Godmode”,第1张

概述对于搜索应用程序,我目前正在尝试索引 Windows包含的“Godmode”特殊文件夹以用于其自己的搜索功能. 使用伟大的Vanara.Windows.Shell库我目前能够索引我的桌面,但是一旦我尝试索引Godmode文件夹,枚举就不会产生任何项目.我尝试以管理员用户身份运行IDE,但是没有修复它. 这是我目前正在使用的代码: void Main(){ Shell32.IShellFo 对于搜索应用程序,我目前正在尝试索引 Windows包含的“Godmode”特殊文件夹以用于其自己的搜索功能.

使用伟大的Vanara.windows.Shell库我目前能够索引我的桌面,但是一旦我尝试索引Godmode文件夹,枚举就不会产生任何项目.我尝试以管理员用户身份运行IDE,但是没有修复它.

这是我目前正在使用的代码:

voID Main(){    Shell32.IShellFolder desktopShellFolder;    Shell32.SHGetDesktopFolder(out desktopShellFolder);    Shell32.PIDL ppIDl;    Shell32.SFGAO psfgaoOut;    Shell32.SHParsedisplayname("shell:::{ED7BA470-8E54-465E-825C-99712043E01C}",IntPtr.Zero,out ppIDl,(Shell32.SFGAO)0,out psfgaoOut);    var godmodeShellFolder = (Shell32.IShellFolder)desktopShellFolder.BindToObject(ppIDl,null,new GuID("000214E6-0000-0000-C000-000000000046"));    CollectSearchItems(godmodeShellFolder,ppIDl);}voID CollectSearchItems(Shell32.IShellFolder shellFolder,Shell32.PIDL pIDl){    var itemEnum = shellFolder.EnumObjects(IntPtr.Zero,Shell32.SHCONTF.SHCONTF_NONFolDERS | Shell32.SHCONTF.SHCONTF_FolDERS);    IntPtr itemID;    uint fetched;    while (itemEnum.Next(1,out itemID,out fetched) == HRESulT.S_OK)    {        Shell32.SFGAO sfgao = Shell32.SFGAO.SFGAO_FolDER | Shell32.SFGAO.SFGAO_STREAM | Shell32.SFGAO.SFGAO_link;        shellFolder.GetAttributesOf(1,new IntPtr[] { itemID },ref sfgao);        if ((sfgao & Shell32.SFGAO.SFGAO_FolDER) == 0)        {            var childPIDl = new Shell32.PIDL(itemID);            var itemname = shellFolder.GetdisplaynameOf(childPIDl,Shell32.SHGDNF.SHGDN_INFolDER | Shell32.SHGDNF.SHGDN_norMAL);        }    }}

如果我更换
CollectSearchItems(godmodeShellFolder,ppIDl);使用CollectSearchItems(desktopShellFolder,ppIDl);我可以成功枚举我的桌面,所以我觉得我非常接近……

为什么枚举Godmode文件夹不起作用,我该如何解决这个问题?

解决方法 我找到了两个解决方案

>以x64 / Anycpu模式而不是x86运行我的应用程序,现在枚举器实际上找到了元素,我可以查询它们的名称.这给了我期待的结果.>来自@SimonMourIEr的解决方案.这段代码更简单,效果很好!

总结

以上是内存溢出为你收集整理的在C#中列举“Godmode”全部内容,希望文章能够帮你解决在C#中列举“Godmode”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1233128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存