代码之家  ›  专栏  ›  技术社区  ›  Elan

可以向NTFS文件夹添加自定义属性吗?

  •  5
  • Elan  · 技术社区  · 15 年前

    我希望能够将自己的自定义数据/属性添加到NTFS上的现有文件夹中,这样,如果一个文件夹被移动,属性就会随它移动。一种解决方案是在文件夹中存储一个文件,以包含我需要或想要的任何内容。

    我特别感兴趣的是,是否有方法向目录文件系统对象本身添加自定义属性。

    2 回复  |  直到 15 年前
        1
  •  3
  •   user166390user166390    14 年前

    如果你感到勇敢( 或愚蠢 )也许是 Alternative Data Stream 会是另一种选择。

    我不确定是否可以应用于一个目录,而不是一个普通的文件,并且它到处都是需要考虑的问题:

    1. 没有列出它们的标准windows用户工具(例如,无法从explorer或cmd提示符查看,但是 可以 在大多数程序中以正确的名称打开)。
    2. 它们不会很好地从NTFS文件系统转移出去。
    3. 我不知道,他们可能还会升起AV旗。

    快乐的编码。

        2
  •  2
  •   svick Raja Nadar    14 年前

    这里有一种用c#显示文件自定义属性的方法

    DSOFile.OleDocumentPropertiesClass file = new DSOFile.OleDocumentPropertiesClass();
    
    file.Open(@"C:\setup.exe", false, DSOFile.dsoFileOpenOptions.dsoOptionDefault);
    
    string key = "key1";
    
    object value = "value1";
    
    // Adds new custom property.
    
    file.CustomProperties.Add(key, ref value);
    
    // Go through existing custom properties.
    
    foreach (DSOFile.CustomProperty p in file.CustomProperties)
    
    {
    Console.WriteLine("{0}:{1}", p.Name, p.get_Value().ToString());
    }
    
    file.Close(true);
    

    第一个在file.CustomProperties.Add(key,ref value)中; 通过修改属性键(属性,您可以修改它,如下所示。 在key中,您应该输入下列属性名之一,这些属性名在这里按其实际值的名称描述为常量

    Const FILE_ATTRIBUTE_READONLY = 1
    Const FILE_ATTRIBUTE_HIDDEN = 2
    Const FILE_ATTRIBUTE_SYSTEM = 4
    Const FILE_ATTRIBUTE_DIRECTORY = &H10
    Const FILE_ATTRIBUTE_ARCHIVE = &H20
    Const FILE_ATTRIBUTE_ENCRYPTED = &H40
    Const FILE_ATTRIBUTE_NORMAL = &H80
    Const FILE_ATTRIBUTE_TEMPORARY = &H100
    Const FILE_ATTRIBUTE_SPARSE_FILE = &H200
    Const FILE_ATTRIBUTE_REPARSE_POINT = &H400
    Const FILE_ATTRIBUTE_COMPRESSED = &H800
    Const FILE_ATTRIBUTE_OFFLINE = &H1000
    Const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = &H2000 
    

    然后你应该给常数赋值

    然后查看每个文件的每个属性

    Console.WriteLine("{0}:{1}", p.Name, p.get_Value().ToString());
    
    推荐文章