Можно ли добавить пользовательские свойства в папки NTFS? - PullRequest
5 голосов
/ 15 ноября 2010

Я хотел бы иметь возможность добавлять свои собственные пользовательские данные / свойства в существующие папки в NTFS, чтобы при перемещении папки свойства перемещались вместе с ней. Одним из решений было бы сохранить файл в папке, чтобы он содержал все, что мне нужно или что я хочу.

Что меня особенно интересует, так это то, есть ли способ добавить пользовательские свойства в сам объект файловой системы каталога.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Вот способ показать в 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);

Первый в файле. CustomProperties.Add (ключ, значение ref); изменив ключ атрибута (свойство, вы можете изменить его, вот следующие. в ключе вы должны указать одно из следующих атрибутов, которые здесь описываются как константы по именам из их реальных значений

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());
2 голосов
/ 15 ноября 2010

Если вы чувствуете себя смелым ( или глупым ), возможно, альтернативным будет Альтернативный поток данных .

Я не уверен, что может быть применен к каталогу, а не к обычному файлу, и он изобилует проблемами, которые необходимо учитывать:

  1. Нет стандартного пользовательского инструмента для Windows, в котором они перечислены (например, невозможно просмотреть из проводника или команды cmd, но можно открыть в большинстве программ с правильным именем).
  2. Они не будут хорошо переноситься с файловой системы NTFS.
  3. Они могут также поднять некоторые флаги AV, я не знаю.

Удачного кодирования.

...