--- Reg5 file to create sample keys: ---
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\_ATEST_\.Default\Curren0]
@="myvalue1"
[HKEY_CURRENT_USER\_ATEST_\.Default\current0?]
@="myvalue2"
[HKEY_CURRENT_USER\_ATEST_\.Default\current0肼]
@="myvalue3"
[HKEY_CURRENT_USER\_ATEST_\AppGPFault\Curren0]
@="myvalue4"
[HKEY_CURRENT_USER\_ATEST_\AppGPFault\current0肼]
@="myvalue5"
-------------
####
begin 640 reg5-format.reg
M__Y7`&D`;@!D`&\`=P!S`"``4@!E`&<`:0!S`'0`<@!Y`"``10!D`&D`=`!O
M`'(`(`!6`&4`<@!S`&D`;P!N`"``-0`N`#``,``-``H`#0`*`%L`2`!+`$4`
M60!?`$,`50!2`%(`10!.`%0`7P!5`%,`10!2`%P`7P!!`%0`10!3`%0`7P!<
M`"X`1`!E`&8`80!U`&P`=`!<`$,`=0!R`'(`90!N`#``!@!=``T`"@!``#T`
M(@!M`'D`=@!A`&P`=0!E`#$`(@`-``H`#0`*`%L`2`!+`$4`60!?`$,`50!2
M`%(`10!.`%0`7P!5`%,`10!2`%P`7P!!`%0`10!3`%0`7P!<`"X`1`!E`&8`
M80!U`&P`=`!<`&,`=0!R`'(`90!N`'0`,``_`%T`#0`*`$``/0`B`&T`>0!V
M`&$`;`!U`&4`,@`B``T`"@`-``H`6P!(`$L`10!9`%\`0P!5`%(`4@!%`$X`
M5`!?`%4`4P!%`%(`7`!?`$$`5`!%`%,`5`!?`%P`+@!$`&4`9@!A`'4`;`!T
M`%P`8P!U`'(`<@!E`&X`=``P`+R`70`-``H`0``]`"(`;0!Y`'8`80!L`'4`
M90`S`"(`#0`*``T`"@!;`$@`2P!%`%D`7P!#`%4`4@!2`$4`3@!4`%\`50!3
M`$4`4@!<`%\`00!4`$4`4P!4`%\`7`!!`'``<`!'`%``1@!A`'4`;`!T`%P`
M0P!U`'(`<@!E`&X`,``&`%T`#0`*`$``/0`B`&T`>0!V`&$`;`!U`&4`-``B
M``T`"@`-``H`6P!(`$L`10!9`%\`0P!5`%(`4@!%`$X`5`!?`%4`4P!%`%(`
M7`!?`$$`5`!%`%,`5`!?`%P`00!P`'``1P!0`$8`80!U`&P`=`!<`&,`=0!R
M`'(`90!N`'0`,`"\@%T`#0`*`$``/0`B`&T`>0!V`&$`;`!U`&4`-0`B``T`
&"@`-``H`
`
end
####
#!/perl/bin/perl -w
use UTF8;
use Win32::TieRegistry 0.24 ;
#"Classes" for HKEY_CLASSES_ROOT
#"CUser" for HKEY_CURRENT_USER
#"LMachine" for HKEY_LOCAL_MACHINE
#"Users" for HKEY_USERS
#"CConfig" for HKEY_CURRENT_CONFIG
select STDERR;$|=1;
select STDOUT;$|=1;
my $col=1;
$keyname='CUser\\_ATEST_';
print_key($Registry->{$keyname},$keyname,0);
sub print_key {
my ($cur_key, $keyname, $level)=@_;
if ($col) {
print "\n";
$col=0;
}
print " " x $level; $col=2;
print "$keyname\\";my $nospaces=1;
foreach $member ($cur_key->MemberNames) {
if ($member =~ m|^(.+)\\$|) {
$keyname=$1;
if ($col) {
print "\n";
$col=0;
}
$nospaces=0;
print_key($cur_key->{"$keyname\\"}, "$keyname",$level+1);
} elsif ($member =~ m|^\\(.*)$|) {
$valuename=$1;
$value=$cur_key->GetValue("$valuename");
$value=(defined $value)?$value:"(value not set)";
$value=(length($value))?$value:"(null)";
if (!$nospaces) {print " " x ($level+1); $col+=2;};
$nospaces=0;
print "$valuename => $value";
if ($col) {
print "\n";
$col=0;
}
}
}
}
####
CUser\_ATEST_\
.Default\
Curren0♠\ => myvalue1
current0?\ => myvalue2
current0?\ => myvalue2
AppGPFault\
Curren0♠\ => myvalue4
current0?\Can't call method "MemberNames" on an undefined value at ./test.pl
line 34.