Монтирование Windows-реестра в Linux В рамках проекта HIVEXFS подготовлен FUSE-модуль для монтирования реестра Windows к любому каталогу и дальнейшей работы с реестром как с древовидной ФС. На данный момент HIVEXFS уже используется в Dr.Web LiveCD , на котором найденные реестры монтируются посредством autofs в каталог /reg. Каталоги соответствуют разделам реестра, файлы - параметрам, содержимое файла - значению соответствующего параметра. Параметр по умолчанию обозначается файлом ‘@’, тип параметра определяется через расширенные атрибуты файла. Значения параметров, имеющие типы REG_SZ, REG_EXPAND_SZ, REG_LINK REG_DWORD или REG_QWORD, автоматически конвертируется в текст (UTF-8) и обратно. Для монтирования реестра используется утилита hivexfs. В качестве первого аргумента указывается точка монтирования windows-диска, второй аргумент - пустой каталог: Code: sudo hivexfs /mnt/windows /mnt/registry Примеры использования: Создадим параметр NEW_VALUE типа REG_SZ: Code: echo qwerty > NEW_VALUE Посмотрим реальное содержимое: Code: attr -qg value NEW_VALUE |hexdump -C 00000000 71 00 77 00 65 00 72 00 74 00 79 00 0a 00 00 00 |q.w.e.r.t.y.....| Как видим это строка в кодировке UTF-16LE, в конце завершается двумя нулями. Преобразуем в тип REG_DWORD: Code: # attr -s type -V reg_dword NEW_VALUE attr_set: Недопустимый аргумент Could not set "type" for NEW_VALUE Выдана ошибка, так как строка в число не переводится, попробуем снова: Code: # echo 12345 > NEW_VALUE Attribute "type" set to a 9 byte value for NEW_VALUE : reg_dword # attr -g type NEW_VALUE Attribute "type" had a 9 byte value for NEW_VALUE : REG_DWORD # attr -g size NEW_VALUE Attribute "size" had a 1 byte value for NEW_VALUE : 4 # cat NEW_VALUE 12345 Поддерживаемые операции: Посмотреть доступный список типов параметра Code: attr -l [value] Посмотреть тип параметра можно командой: Code: getfattr -n user.type [value] или Code: attr -g type [value] Реальный размер параметра: Code: getfattr -n user.size [value] или Code: attr -g size [value] Реальное побайтное содержимое параметра: Code: getfattr --only-values -n user.value [value] или Code: attr -qg value [value] копировать лучше командой ln (link), тогда копируются все атрибуты параметра. Команда cp использует вызовы read и write, которые строковые и числовые ключи перекодируют на лету, в UTF-8 и обратно. Так что cp - это весьма накладно + он ни чего не знает о типе параметра. Рекурсивно скопировать раздел можно командой cp -Rl [path1] [path2] По умолчанию создается тип REG_SZ, если параметр модифицируется, то его тип не меняется. Сменить тип параметра можно командой: Code: setfattr -n user.type -v [new_type] [value] или Code: attr -s type -V [new_type] [value] Модификация типа возможна для параметров: REG_SZ, REG_EXPAND_SZ, REG_LINK, REG_BINARY, REG_DWORD, REG_QWORD. В случае невозможности модификации типа возвращается ошибка. Если что-то сделали не так, то отменить изменения можно убив процесс hivexfs, тогда демонтирования не будет и изменения в силу не вступят. Есть ограничение: не возможно создать раздел или параметр с именем содержащим национальныхе символы. 17.01.2013 , Автор: Сергей Трубин http://www.opennet.ru/tips/2735_windows_registry_mount_fuse.shtml