Hi all.
I have a large bit of code that I have been
maintaining for several years. I ran into a problem a
couple of weeks back where I made a change to the code
and I ended up deleting a registry key structure on a
lot of machines. I was Mr Popular for a while there..
Anyway I've managed to reproduce the problem in a few
lines of code show below (there are not too many lines
so hopefully line wrapping won't be a problem:
* * * BEGIN CODE * * *
use Win32::TieRegistry( Delimiter=>"#" );
$nodename = $ENV{COMPUTERNAME};
$Register7 =
"SYSTEM#CurrentControlSet#Services#Tcpip#Parameters";
if ($hkey_connect = $Registry->Connect($nodename,
"LMachine#", {Access=>KEY_READ})) {
$dns_interfaces_hash =
$hkey_connect->{"$Register7#Interfaces2#"};
# # do something with the data in this hash
}
# # # This deletes the above 'Interfaces2' key
structure. Why?
undef %$dns_interfaces_hash;
* * * END CODE * * *
The 'Interfaces2' does not exist natively on a system
I copied the 'Interfaces' key structure so that I
could play around with a non-critical key structure.
What I meant to do was put:
undef $dns_interfaces_hash;
on the last line instead of what is there.
My question is if I have specified that I connect to
the registry in KEY_READ mode how is it that I can
delete a key structure by undef'ing a hash? I've just
double checked through the comments in the
TieRegistry.pm file and it looks as though specifying
KEY_READ should prevent me from deleting things.
If I am misunderstanding this can someone let me know
and also modify the above code snippet to demonstrate
how this should be achieved?
I'm using an older perl (Ativeperl 5.6.1 ) and related
modules on this system so I'd appreciate if someone
could try this small code snippet on their system with
a newer setup.
Thanks in advance,
PJ
____________________________________________________
On Yahoo!7
24: Watch it from 9.30pm on Thursdays on Seven
http://www.seven.com.au/seven/24
_______________________________________________
Perl-Win32-Admin mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs