2010-11-14 17 views
5

Me gustaría poder agregar mis propios datos/propiedades a las carpetas existentes en NTFS, de modo que si se mueve una carpeta, las propiedades se mueven con ella. Una solución sería almacenar un archivo dentro de la carpeta para contener lo que necesito o quiero.¿Se pueden agregar propiedades personalizadas a las carpetas NTFS?

Lo que me interesa especialmente es si existe o no una forma de agregar propiedades personalizadas al objeto del sistema de archivos del directorio.

+0

http://stackoverflow.com/questions/1235150/ dsofile-c-api-ntfs-custo m-file-properties –

Respuesta

2

Si te sientes valiente ( o tonto) quizás un Alternative Data Stream sería una alternativa.

No estoy seguro de si se puede aplicar a un directorio en lugar de un archivo normal y está llena de preocupaciones que deben tenerse en cuenta:

  1. No hay herramienta de usuario de Windows estándar que los lista (por ejemplo, no se puede ver desde el indicador de explorador o cmd, pero puede abrirse en la mayoría de los programas con el nombre correcto).
  2. No se transferirán bien fuera del sistema de archivos NTFS.
  3. También pueden levantar algunas banderas AV, no sé.

Happy coding.

+2

Nada tonto sobre flujos de datos alternativos, están diseñados para este tipo de cosas. Y, sí, funcionan en directorios. – snoone

1

Aquí es una forma en C# para mostrar las propiedades personalizadas archivo

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

Primero en file.CustomProperties.Add (clave, valor ref); modificando la clave de atributo (la propiedad, puede modificarlo, aquí es lo siguiente. en clave que debe poner uno de los siguientes attribute_names, que aquí se describe como constantes por los nombres de sus valores reales

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 

entonces usted debe asignar el valor deseado para la constante, en valor

Luego de ver cada propiedades de cada archivo que se muestran en la línea de

Console.WriteLine("{0}:{1}", p.Name, p.get_Value().ToString()); 
Cuestiones relacionadas