use strict; use Win32::Service; use Win32::Registry; use vars qw/%data @source @target/; if ($HKEY_LOCAL_MACHINE->Connect($ARGV[0], my $root)) { print "\nSuccessfully connect to remote registry on $ARGV[0]\n"; if ($root->Open("SYSTEM\\CurrentControlSet\\Control\\Print\\printers", my $Key)) { print "Obtaining printer information....Please wait\n"; my @keys; my $counter = 0; $Key->GetKeys( \@keys ); print "\nPrinters found on machine : $ARGV[0]\n"; for my $subkey ( @keys ) { print "$subkey\n"; &deleteReg($Key,"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Print\\printers\\".$subkey); } $Key->Close; } $root->Close; } else { print "\nError: $^E \n"; } sub deleteReg { my( $key, $name )= @_; for( eval { keys %{$key->{$name}} } ) { deleteReg( $key, "$name\\$_" ); } delete $key->{$name}; }