Ужаснувшись обилием ненависти из предыдущей статьи, я решил немного скрасить конфуз с метками для пользователей Висты. Ну в самом деле, как-то совсем нехорошо получилось — тем более, что сам давно хотел это сделать, да руки все не доходили…
Что же это такое?
Это — расширение оболочки Windows, позволяющее привязывать к файлу дополнительные свойства. Пока таковых свойств ровно 3 штуки — теги, комментарий и рейтинг. При желании можно было бы добавить и другие, но надо было на чем-то остановиться.
Значения сохраняются в альтернативном NTFS-потоке под названием TaggData, абсолютно незаметны для пользователя и прозрачны для системы. Если только у Вас нету параноидального антивируса, для которого существует скрытая угроза от XML-ки в файловом потоке.
Для начала библиотека Tagg.dll регистрируется в системе как COM-объект при помощи команды regsvr32 (разумеется, из-под администратора). После чего появляется запись о классе под кодовым названием {09ECDDF2-61C3-4bb6-88C6-70BC292AD0EC}.
Следующий шаг — это указать, какие расширения файлов должны обрабатываться нашим фильтром. К сожалению, в Vista нельзя указать глобальный обработчик свойств для всех файлов, поэтому придется добавить все необходимые расширения в ветку HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers. Там уже есть какие-то расширения, так что добавляем по аналогии.
Если для какого-то типа файлов уже зарегистрирован обработчик — не беда. Его CLSID достаточно «переместить» в дополнительном ключе реестра Fallback, а в дефолтном ключе указать наш CLSID — тогда Tagg дополнит существующий набор свойств своими.
Теперь необходимо сказать, где и в каких случаях должно показываться свойство для каждого типа файлов.
B Windows Vista, как и в ее предшественнице, свойства для типов файлов задаются в реестре в виде строки типа «prop:System.ItemType;System.Size;...». Для каждого случая, будь то подсказка, тайл или подробная информация, предусмотрена своя строка со свойствами.
Соответственно, нужно вставить в эти строки свойства, нужные нам — System.Keywords, System.Comment и System.Rating. И тут тоже есть подстава — эти строки тоже весьма разбросаны по реестру. Вот, например, основные места в порядке приоритета — HKCR\SystemFileAssociation, HKCR, HKCR\*. Так что придется немного попотеть, выискивая нужное место… (hint: при желании можно написать утилиту для этого ;) )
Для примера добавим теги к png-файлу.
Итак, начнем с привязки к расширению.
Как видно, у него уже был обработчик, поэтому старый перенесен в Fallback.
Теперь немного изменим строку свойств для preview-а…
и… вуаля!
Можно менять и добавлять теги…
… группировать и фильтровать по ним…
… искать и раскладывать (до сих пор не знаю, как тут правильно перевести «stack»)…
Также они замечательно интегрируются в существующие программы, вроде Photo Gallery…
… или Snipping Tool…
Ну, и сам линк на длл-ку: слил, рапида, whatever you want )
UPD: версия 1.0.0.2 здесь и здесь. Исправлен баг с рандомным рейтингом в эксплорере.
От совершенства пока далековато (ручная регистрация утомительна), но уже вполне юзабельно.
И кстати, всех со днем влюбленных! Меньше ненависти и кармокастрации, больше любви и креатива!
Итак, встречаем — Tagg!
Что же это такое?
Это — расширение оболочки Windows, позволяющее привязывать к файлу дополнительные свойства. Пока таковых свойств ровно 3 штуки — теги, комментарий и рейтинг. При желании можно было бы добавить и другие, но надо было на чем-то остановиться.
Значения сохраняются в альтернативном NTFS-потоке под названием TaggData, абсолютно незаметны для пользователя и прозрачны для системы. Если только у Вас нету параноидального антивируса, для которого существует скрытая угроза от XML-ки в файловом потоке.
Как это работает?
Для начала библиотека Tagg.dll регистрируется в системе как COM-объект при помощи команды regsvr32 (разумеется, из-под администратора). После чего появляется запись о классе под кодовым названием {09ECDDF2-61C3-4bb6-88C6-70BC292AD0EC}.
Следующий шаг — это указать, какие расширения файлов должны обрабатываться нашим фильтром. К сожалению, в Vista нельзя указать глобальный обработчик свойств для всех файлов, поэтому придется добавить все необходимые расширения в ветку HKLM\Software\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers. Там уже есть какие-то расширения, так что добавляем по аналогии.
Если для какого-то типа файлов уже зарегистрирован обработчик — не беда. Его CLSID достаточно «переместить» в дополнительном ключе реестра Fallback, а в дефолтном ключе указать наш CLSID — тогда Tagg дополнит существующий набор свойств своими.
Теперь необходимо сказать, где и в каких случаях должно показываться свойство для каждого типа файлов.
B Windows Vista, как и в ее предшественнице, свойства для типов файлов задаются в реестре в виде строки типа «prop:System.ItemType;System.Size;...». Для каждого случая, будь то подсказка, тайл или подробная информация, предусмотрена своя строка со свойствами.
Соответственно, нужно вставить в эти строки свойства, нужные нам — System.Keywords, System.Comment и System.Rating. И тут тоже есть подстава — эти строки тоже весьма разбросаны по реестру. Вот, например, основные места в порядке приоритета — HKCR\SystemFileAssociation, HKCR, HKCR\*. Так что придется немного попотеть, выискивая нужное место… (hint: при желании можно написать утилиту для этого ;) )
Хватит слов!
Для примера добавим теги к png-файлу.
Итак, начнем с привязки к расширению.
Как видно, у него уже был обработчик, поэтому старый перенесен в Fallback.
Теперь немного изменим строку свойств для preview-а…
и… вуаля!
Можно менять и добавлять теги…
… группировать и фильтровать по ним…
… искать и раскладывать (до сих пор не знаю, как тут правильно перевести «stack»)…
Также они замечательно интегрируются в существующие программы, вроде Photo Gallery…
… или Snipping Tool…
UPD: версия 1.0.0.2 здесь и здесь. Исправлен баг с рандомным рейтингом в эксплорере.
От совершенства пока далековато (ручная регистрация утомительна), но уже вполне юзабельно.
И кстати, всех со днем влюбленных! Меньше ненависти и кармокастрации, больше любви и креатива!