另一个难点:备份软件。有些忽略它,有些不恢复它,有些支持它但没有你告诉它就不会执行任何操作。
没有更多关于您存储的数据类型的信息很难说。 您似乎已经意识到了其中一些使用方面的问题,所以我不确定我能提供多少帮助。 不过,这是我对备用数据流的一般想法:
首先,正如您所指出的,AD流仅适用于NTFS。 如果有任何可能需要在FAT文件系统上存储此元数据的情况,您将需要某种回退机制。 现代PC可能会有NTFS格式的内部硬盘驱动器,但您遇到的大多数USB闪存驱动器仍然是FAT格式的。 如果您的用户将在闪存驱动器上存储数据文件,请记住这一点。
除此之外,我想不到任何技术原因来避免使用AD流,但我仍然会谨慎使用它们。人们往往对“隐藏”数据的应用程序感到紧张,无论意图如何。考虑索尼根套件事件等。我并不是说你的应用程序和那个一样糟糕,但人们(尤其是不太懂技术的人)可能不会区分。不过,我承认他们可能有一个有效使用你的应用程序的理由。当然,在卸载后留下AD流的问题仍然非常真实。您可能需要考虑为运行卸载程序的人提供运行程序以搜索他们的驱动器并清理任何剩余流的选项。话虽如此,我相信有些情况下使用ADS是有正当理由的。在我看来,这只是其中一种情况,如果你不绝对确定它是正确的工具,那么它很可能是错误的。
通常给文件添加元数据都是危险的游戏。只需看看ID3的混乱和人们遗留图像中EXIF数据的尴尬结果就知道了。
P.S. 注册表清理程序已经不再使用?为什么没有人告诉我!?
备用数据流对NTFS非常重要,并且始终会得到支持。当它们所附加的文件被删除时,它们也会被删除 - 因此不必担心它们“留存”。
正如其他人所说,备份、复制到其他文件系统以及对备用数据流的偏执症问题存在一些问题。
这对你来说是个坏主意,对微软也是个坏主意。我认为当时它们真的是试图与 Mac 的数据和资源 fork 文件架构竞争。如果 Mac 文件系统文件可以有 2 个 fork,那么我们的将拥有无限的“forks”,也许最终我们会想办法如何使用它们。
将AltDs添加到文件中作为将应用程序特定字符串绑定在其周围的一种方式存在您所引用的问题:没有清理。如果文件被复制,您的东西也会跟随它。对于这种情况,保持单独的数据库可能更加正义。
另一方面,如果文件非常在您自己的控制下,则如果AltDs是执行任务的有效方法,请继续。
到目前为止,我没有听说过在某些必须隐藏特定信息的应用程序中(即医疗应用程序),同时希望不隐藏其他类型信息时使用AltDS。
我之所以喜欢AltDS,正是因为这个原因:我可以设计一个医学成像系统,在其中保持医学图像的开放性(例如BMP),而不包含任何患者信息细节,因为那些我可以保存在AltDS中。优点:如果有人将文件复制到大拇指驱动器中,那么该人只能得到没有患者信息的BMP文件。
备份/还原始终很麻烦-我的解决方案是转移到专有文件格式上进行备份,其中患者信息编码/加密在与(原始)BMP相同的文件中。
最后,如果您将隐藏信息存储为XML格式,则您的应用程序可能已经不存在,但信息仍然存在。 信息应该链接到文件本身,而不是应用程序。 这可能应该存储在其他地方。
总的来说,我非常喜欢AltDS。虽然它缺乏操作系统支持(无法查看AltDS数据),一般公共知识也匮乏(谁?什么?广告?是什么样的广告),但我无需担心与主文件(咳咳流)同步的其他信息,这使我能够设计和实现非常稳健的系统。
备份有点烦人——特别是Joliet应该被设计为处理那些AltDS——但我可以忍受它。
这只是我的2分钱意见(好吧,也许是3分钱……)。