【问题标题】:Windows Explorer Alternate Data Stream Shell ExtensionWindows 资源管理器备用数据流外壳扩展
【发布时间】:2012-02-20 09:52:35
【问题描述】:

我有一些文件使用备用数据流并且没有显示在 Windows 资源管理器中。我想制作一个 shell 扩展或一个在后台运行的程序,当我使用 Windows 资源管理器并导航到具有备用数据流文件的文件夹时,将此文件显示给 Windows 资源管理器,但上面有一个覆盖图标。

这可能吗?是否有示例代码可供查看?

非常感谢。

【问题讨论】:

  • 好的,但是如何在 Windows 资源管理器上显示备用数据流文件?
  • 再一次,在我看来,shell 不太可能承认向目录添加额外的虚拟项目。现在,虚拟命名空间肯定是可能的,但我怀疑它是否是真正的目录。
  • 大卫,覆盖图标是可能的。他们不想将实际项目添加到目录中。
  • 鉴于您问题中的标签,您可能需要重新考虑。您可以将 Java 或 .NET 运行时注入到每个使用公共文件对话框的进程中。虽然从性能的角度来看很糟糕,但还有一个更大的问题是,这会导致与针对不同框架版本的应用程序不兼容。请用 C++ 做。
  • 即使在 C++ 上也如何做到这一点?有没有例子或其他东西可以解决这个问题?

标签: windows winapi shell-extensions alternate-data-stream


【解决方案1】:

另一个也适用于 Windows Explorer x64 的更新选项是 AlternateStreamExtension。它还提供图标覆盖。

你可以找到它here

【讨论】:

  • 不幸的是,它不适用于 Windows 10。尝试通过 PowerShell 查看流集时出现 DLL 错误。
  • @seagull:我刚刚在 Windows 10 x64 上尝试过:对我来说就像一个魅力。也许您混合了 32 位和 64 位 DLL?
  • 不,我安装了正确的 DLL。我可以查看一些信息,但第二次我尝试以十六进制查看信息,例如,它崩溃了。
【解决方案2】:

Microsoft 已经提供了一个名为StrmExt 的shell 属性表处理程序。诚然,它不是您想要的,它是为 Windows 2000 和 Windows XP 以及 has to be recompiled for 64 bit versions of Explorer 编写的,但它包含 C++ 源代码,至少应该为您提供一个起点。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2011-11-20
    • 2015-03-02
    • 2019-04-17
    相关资源
    最近更新 更多