Новости из Блогов Монтирование Windows-реестра в Linux

Discussion in 'Мировые новости. Обсуждения.' started by Solitude, 17 Jan 2013.

  1. Solitude

    Solitude Member

    Joined:
    29 Aug 2011
    Messages:
    445
    Likes Received:
    23
    Reputations:
    1
    Монтирование 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
     
Loading...