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

时间:2010-11-14 21:29:38

标签: filesystems metadata directory ntfs

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

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

2 个答案:

答案 0 :(得分:2)

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

我不确定是否可以将其应用于目录而不是普通文件,而且需要考虑的问题是:

  1. 没有列出它们的标准Windows用户工具(例如,无法从资源管理器或cmd提示符中查看,但可以在大多数程序中打开,并给出正确的名称)。
  2. 他们不会很好地转移出NTFS文件系统。
  3. 他们也可能会举起一些AV旗帜,我不知道。
  4. 快乐的编码。

答案 1 :(得分:2)

以下是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中你应该放置以下attribute_names之一,这里的名称来自其真实值的名称

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());