我需要构建一个文件/文件夹树,其中包含相关的文件图标和网络计算机等特殊位置。
目前我正在使用Shell API来实现它:SHGetFileInfo,IShellFolder.EnumObjects和其他功能。
它在大多数情况下都可以正常工作,但偶尔会在客户的计算机上导致各种错误,例如系统库中的随机访问冲突。分析错误报告,其中一些似乎是第三方shell扩展的结果,当使用Shell API时,这些扩展被加载到我的应用程序的地址空间。
我想以某种方式避免使用Shell API并以另一种方式完成工作。构建文件夹树的其他好方法是什么?
答案 0 :(得分:0)
如果问题确实是由于shell扩展错误引起的,那么在我看来,唯一合理的方法就是删除那些shell扩展。尝试使用shell,但避免使用shell API不会导致任何有用的。事实上,我认为可能的结果是您的替代代码功能较少。一切都是为了一个用户不会修复他们破碎的机器。这是一次可怕的交易。
如果资源管理器也崩溃,那么这清楚地表明问题确实是由于shell扩展。
说完所有这些后,你发帖让我怀疑你有来自多个客户的错误报告。这使得您的诊断更不可信。 shell API是一个复杂的野兽,你的代码在某种程度上有缺陷是非常合理的。我怀疑你可能因为一厢情愿的诊断而感染了。当面对难以复制和诊断的错误时,相信您的代码不应该受到指责是非常容易的。如果多个客户报告问题,那么我的赌注是可以在您的代码中找到缺陷。