Windows资源管理器备用数据流外壳扩展程序

3

我有一些使用备用数据流的文件,在Windows资源管理器中不显示。我想要制作一个外壳扩展程序或后台运行的程序,当我使用Windows资源管理器并导航到具有备用数据流文件的文件夹时,它会向Windows资源管理器显示此文件,但带有覆盖图标。

这种情况是否可能?是否有示例代码可供查看?

非常感谢。


好的,但是如何在Windows资源管理器中显示备用数据流文件? - Nick Doulgeridis
1
再次强调,对于 shell 来说,在目录中添加额外的虚拟项似乎并不可能。现在,为虚拟名称空间添加虚拟项当然是可行的,但我怀疑这对于真正的目录来说是否可行。 - David Heffernan
David,覆盖图标是可行的。他们不想向目录添加实际项目。 - Joey
考虑一下你问题中的标签后,你可能需要重新思考。您将会在使用共同文件对话框的每个进程中注入Java或.NET运行时。从性能角度来看,这是非常糟糕的,并且还存在一个更大的问题,即这会导致与针对不同框架版本的应用程序不兼容。请使用C++来完成它。 - Joey
即使在C++中如何做到这一点?有示例或其他可以用来处理此问题的东西吗? - Nick Doulgeridis
显示剩余3条评论
2个回答

2
另一个更近期的选择是AlternateStreamExtension,它也适用于Windows Explorer x64,并提供图标覆盖。你可以在这里找到它。

不幸的是,它无法在Windows 10上运行。当我尝试通过PowerShell查看流集时,会出现DLL错误。 - seagull
@seagull:我刚刚在Windows 10 x64上尝试了一下:对我来说非常完美。也许你混淆了32位和64位的DLL? - Jinxed
不,我安装了正确的DLL。我可以查看一些信息,但是当我尝试以十六进制查看信息时,例如,它就会崩溃。 - seagull

1

微软已经提供了一个名为StrmExt的外壳属性表处理程序。尽管它不完全符合您的要求,而且是为Windows 2000和Windows XP编写的,必须重新编译以支持64位版本的Explorer,但它包括C++源代码,这应该至少给您一个起点。

在Windows Vista中,引入了两个新的API函数,以便更轻松地枚举备用数据流:FindFirstStreamWFindNextStreamW。这些函数的工作方式类似于Win32中存在多年的其他FindFirstXFindNextX类型函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接