sub deleteReg {
my( $key, $name )= @_;
for( eval { keys %{$key->{$name}} } ) {
deleteReg( $key, "$name\\$_" );
}
delete $key->{$name};
}
deleteReg(
$Registry,
"HKEY_LOCAL_MACHINE/SOFTWARE/MyWay/",
);
####
*isa= \&UNIVERSAL::isa;
sub deleteReg {
my $key= shift @_; # Registry key to delete item from
my $name= shift @_; # Name of item to delete
{
my $item= $key->{$name};
if( ! $item ) {
warn "Can't read $name in ",
$key->Path(), ": $^E\n";
return;
}
if( ref($item) && isa($item,"HASH") ) {
for my $subName ( keys %$item ) {
deleteReg( $item, $subName );
}
}
}
delete $key->{$name}
or warn "Can't delete $name from ",
$key->Path(), ": $^E\n";
}
deleteReg(
$Registry,
"HKEY_LOCAL_MACHINE/SOFTWARE/MyWay/",
);
####
sub regDelTree {
my $rootKey= shift @_; # Reg key to del subtree from
my $keyName= shift @_; # Name of key to delete
{
my $key= $rootKey->{$keyName};
if( ! $key ) {
warn "Can't open $keyName in ",
$rootKey->Path(), ": $^E\n";
return;
}
for( $key->SubKeyNames() ) {
regDelTree( $key, "$_\\" );
}
}
delete $rootKey->{$keyName}
or warn "Can't delete $keyName from ",
$rootKey->Path(), ": $^E\n";
}
regDelTree(
$Registry,
"HKEY_LOCAL_MACHINE/SOFTWARE/MyWay/",
);