Windows如何读取Linux,Linux下读取Windows注册表

原本以为Linux下读取Windows的注册表是个异想天开、无法实现的想法,忽然发现了老外写的一段小文章 http://www.linuxidc.com/Linux/2011-04/34100p2.htm,才知道原来早就有人做过了。

为了在linux下能够解读注册表文件,需要几个小工具:首先是一个Pascal语言写的dumphive,负责将windows注册表文件转换为文本格式;另外还需要Win32-Registry-File-1.10,这是一个用perl语言写的,分析、读取注册表的工具,同时Win32-Registry-File-1.10还依赖另外一个perl工具Tie-IxHash-1.22。

dumphive的下载地址为http://gitorious.com/canaima-gnu-linux/dumphive/commits/upstream,Win32-Registry-File-1.10为http://search.cpan.org/~avatar/Win32-Registry-File-1.10/File.pm,Tie-IxHash-1.22为http://search.cpan.org/~chorny/Tie-IxHash-1.22/lib/Tie/IxHash.pm

在正式开始工作前,先要将工具软件安装好,首先解压缩dumphive包,由于它是由Pascal语言写出的,所以要下载free Pascal的编译器,在Ubuntu下,用apt-get install fpc即可,然后进入src目录下,直接make就可以获得dumphive可执行程序了。再安装Win32-Registry-File-1.10和Tie-IxHash-1.22,这两个perl程序的安装方法类似,先解压,在运行perl MakeFile.pl 生成makfile,再运行make,最后make install

真正的工作就可以开始了

1.首先将windows所在分区挂载到/mnt/目录上,(如果挂载不了,需要下载并安装ntfsprogs)

2.cp /mnt/WINDOWS/system32/config/SYSTEM /tmp/system 将注册表文件拷贝到tmp目录下

3.dumphive /tmp/system /tmp/system.reg 将注册表文件转换为文本格式

4.再编写一个test.pl脚本 ,比如:

use Win32::Registry::File;

$reg = new Win32::Registry::File();

$reg->open('system.reg');

use Data::Dumper;

print Dumper($reg->get(['system\ControlSet001\Control']));

然后perl test.pl就可以看的ControlSet001\Control下的结构了。注意这里的get后的参数中的system,跟第2步时生成的文件名有关,如果将windows下的注册表文件拷贝成aaa,再用dumphive去转换,则生成的注册表文本文件都是以aaa开头的。当执行用cat system.reg,后就可以明显的看出来。

另外Win7跟xp的注册表文件,在linux下解读出来还是有很大差异的,每一个字段前都有一个类似UUID的值。0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值