I would like to store some Application-Related Metadata for Files, and NTFS Alternate Data Streams (AltDS) would allow me to store this metadata directly on the files rather than in a separate database.
I just don t feel like this is a good idea. I know that this only works on NTFS, but at least if the user copies/moves the files to a Non-NTFS drive they get a Warning from Windows (yeah, yeah, no one reads warnings, I know)-
But also, storing additional data on a file can become very wasteful, as the AltDS stay even if my Application is uninstalled. It s like a decade ago when people used "Registry Cleaners" to remove useless entries from the registry after uninstalling a program to make their system run faster (and less stable when the cleaner cleaned too much...).
I just wonder what they can be reasonably used for? Should they be completely left for Microsoft Apps to use? Or is there some sort of common policy what types of apps may use them (apart from malware)?
Edit: Just to clarify what my idea was. I m in the early stages of writing a small document management system for myself. Because I want to have the freedom to move files around, I want to store metadata on the file so that if I move/rename/modify them, my app still recognizes them. It could either be the entire Metadata or just a GUID that works with a separate database.
To summarize the points given:
Pros:
- Metadata moves with the file, so no need to recognize it through hashing or filename
- Works with all FileTypes, even .txt files where it s impossible to store any data in the file itself
Cons:
- Only works on NTFS which may not be the default file system in future Windows Versions
- Although it would surprise me if MS doesn t automatically convert them if they ever get WinFS together
- AltDS remain even if my App is uninstalled
- Privacy concerns
- Fragile
- Most USB Sticks are FAT32. Many private file servers are Linux. Downloading a file from the internet should only transfer the file but not the streams. In short: It s rather easy to lose them.