2010-11-14 19 views
5

Vorrei poter aggiungere i miei dati/proprietà personalizzati alle cartelle esistenti su NTFS, in modo che se una cartella viene spostata, le proprietà si spostano con esso. Una soluzione sarebbe quella di memorizzare un file all'interno della cartella per contenere tutto ciò di cui ho bisogno o che voglio.È possibile aggiungere proprietà personalizzate alle cartelle NTFS?

Ciò a cui sono particolarmente interessato è se esiste o meno un modo per aggiungere proprietà personalizzate all'oggetto stesso del file system di directory.

+0

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

risposta

2

Se vi sentite coraggiosi ( o sciocco) forse un Alternative Data Stream sarebbe un'alternativa.

Io non so se può essere applicato a una directory al contrario di un normale file ed è disseminato di preoccupazioni che devono essere considerati:

  1. Non ci sono alcun strumento di Windows utente standard che li elenca (ad esempio, impossibile visualizzare dal prompt di explorer o cmd, ma può essere aperto nella maggior parte dei programmi con il nome corretto).
  2. Non si trasferiscono correttamente dal filesystem NTFS.
  3. Possono anche generare alcune bandiere AV, non lo so.

Felice codifica.

+2

Niente di pazzo per i flussi di dati alternativi, sono progettati per questo genere di cose. E, sì, funzionano sulle directory. – snoone

1

Ecco un modo in C# per mostrare le proprietà del file personalizzate

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

In primo luogo nella file.CustomProperties.Add (chiave, valore ref); modificando la chiave di attributo (la proprietà, è possibile modificarlo, qui sono i seguenti. in chiave si dovrebbe mettere uno dei seguenti attribute_names, che sono qui descritti come costanti con nomi dai loro valori reali

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 

allora si dovrebbe assegnare il valore desiderato per la costante, in termini di valore

poi vedere ogni proprietà di ogni file che li mostra sulla linea

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