【问题标题】:Creating a custom file property in C# [duplicate]在 C# 中创建自定义文件属性 [重复]
【发布时间】:2012-01-30 22:18:41
【问题描述】:

可能重复:
Can one add custom properties to NTFS folders?

我正在尝试用 C# 编写一个独立的可执行文件,它将一个值附加到一个文本文件(不更改文件的内容),以后可以读取该文件。

我研究了以下解决方案,但没有一个完全有效:

  • Shell32.dll:似乎只允许读取属性。我找不到任何有关如何使用 Shell32 编写属性的信息。
  • DSOFile:应用程序需要独立,我也担心未来的操作系统兼容性。
  • NTFS 备用数据流 (ADS):如果文件被移动或复制,许多工具将不会复制此信息,我担心未来的兼容性。

是否有另一种方法(COM 等)将自定义属性附加到 .NET 中的文本文件?

【问题讨论】:

  • 当您说“自定义属性”时,您是指出现在文件属性对话框的详细信息选项卡上的那种吗?如果是这样,我相信您需要创建的是 shell 元数据处理程序,尽管我不确定。 MSDN 有更多信息msdn.microsoft.com/en-us/library/windows/desktop/…
  • 我还应该补充一点,shell 属性处理程序是在 shell(资源管理器)内运行的进程内 COM 服务器。拥有一个依赖于 .NET 运行时的 shell 扩展是一个坏主意,因为它会导致 CLR 被注入 shell,以及使用需要加载扩展的 shell API 的进程。来源:blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx
  • 感谢您的回复:可能的重复问题讨论了已经考虑过的 ADS。
  • 这些信息不需要在文件属性对话框中可见,正如您提到的,使用 .NET 创建 shell 扩展不一定是可取的。我只需要一个值(10-20 字符)以某种方式附加到文件,以便以后可以检索它。基于应用程序限制,使用 Zip 文件将两者捆绑在一起将不起作用。
  • 我认为,您的问题的答案是否定的。文件的存储方式由您正在使用的特定文件系统控制,如果该文件系统不允许您将元数据附加到文件,则无法将元数据附加到文件。您可以解决将这些信息存储在其他地方并将其链接到文件但其他方式的问题。

标签: c# .net file-io filesystems


【解决方案1】:

我能想到的唯一三种方法:

  1. ADS - 但是你已经忽略了这个。
  2. 将其添加到文件名中。
  3. 将其添加到文件的开头或结尾。

如果它是一个可以移动的应用程序控制文件,那么最好的选择是第二个。当然,这意味着文件可能会在重命名操作中“丢失”该信息。

第三个选项有点不确定。如果您可以控制文件的查看方式,那么您可以简单地给它一个不同的扩展名并将您的数据写入它的顶部。当需要打开它时,您可以“提取”真实文件并相应地打开。我认为这要复杂得多……但它将包含您的数据并且不太可能被劫持。

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多