31 мая 2011 г.

Почему пользовательские свойства файла, созданные в Windows 2000, отсутствуют в новых версиях Windows?

Автор: Рэймонд Чен.

Оригинал статьи на английском: Why are custom properties created on Windows 2000 lost when I view the file from newer versions of Windows?

Проводник Windows 2000 позволял добавлять свойства наподобие «Сводка» и «Автор» почти ко всем типам файлов. Однако на машине под управлением Windows XP или более поздних версий эти свойства отсутствуют. Куда они пропали?

Большинство типов файлов не имеют возможности добавления метаданных. Например, каждый байт текстового файла используется текстовыми данными; хранить метаданные наподобие «Автор» или «Сводка» просто негде. Оболочка Windows 2000 сохраняла эти дополнительные сведения в альтернативных потоках данных NTFS (точнее, оболочка использовала формат хранения STGFMT_FILE, который реализован средствами альтернативных потоков данных NTFS). Данные в альтернативных потоках прикрепляются к файлу не затрагивая его содержимое.

Это была хорошая идея - воспользоваться возможностью NTFS прикреплять к файлу произвольные данные,но ей также была присуща и серьезная проблема. Альтернативные потоки не сохраняются при простых и распространенных действиях: отправке файла по электронной почте, копировании файла на флэшку (с файловой системой FAT), загрузке файла на веб-сайт или скачивании файла, записи файла на компакт-диск. Как только файл покидает жесткий диск, возникает серьезный риск потери метаданных.

Во избежание данной проблемы Windows XP сохраняет метаданные в самом файле. Однако это должно поддерживаться самим форматом файла. Для каждого типа файла можно зарегистрировать обработчик свойств, который описывает, как читать и записывать свойства файла. (Windows уже содержит несколько таких обработчиков, например, для JPEG -изображений и MP3-файлов; более поздние версии Windows поддерживают еще больше свойств.) Если обработчик свойств не зарегистрирован, оболочка будет использовать структурированное хранилище, при условии, что оно поддерживается форматом файла.

Данные, которые вы добавили в Windows 2000, никуда не делись. Новые версии Windows просто не озаботились их поиском. (При желании вы можете написать программу, которая открывает файл в режиме STGFMT_FILE, считывает свойства, затем снова открывает файл с помощью пространства имен оболочки и записывает свойства.)

Материалы для программирования с применением системы свойств оболочки можно найти в блоге Бена Караса, на который я щедро ссылаюсь в данной статье.

Комментариев нет:

Отправить комментарий