Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Win32::TieRegistry disperate situation

by Discipulus (Abbot)
on Nov 07, 2002 at 11:43 UTC ( #211047=perlquestion: print w/replies, xml ) Need Help??

Discipulus has asked for the wisdom of the Perl Monks concerning the following question:

Hello monks!!

I'm in fix! I have a sub called findodbc. I pass to it an IP I want to build an hash where keyes are the paths in the Data Base Qualifier {DBQ} and where the values are the DSN.
When I manually use regedit->conect remote registry I 'm able to view ODBC/ODBC.INI and all remote sistem DSN.
When I launch the same code locally it's all ok.

BUT when my sub run from remote I can view only
ODBC Data Sources/ and ODBC File DSN/ that are useless.
I have tried to connect to the remote machine too and to call the script "locally" and read out the data with some results.
use Win32::TieRegistry ( Delimiter=>"/" ); [...] sub findodbc { $lista= $Registry->Connect( "$ip", "LMachine" )or die "Can't connect +to HostA's HKEY_LOCAL_MACHINE key: $^E\n"; $lista=$Registry->{"HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI"}or di +e "$^E\n"; foreach $nom(keys (%$lista)) { print $nom; chop $nom; $coso= $Registry->{"HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/$nom"} +or die "$^E\n"; print "\n$nom\t".$coso->{DBQ}or die $!; if (defined $coso->{DBQ}) { if($coso->{DBQ}=~/\\([\w -]+\\)(database\\)(\w+\.mdb)/){$odbc{$1.$3 +}=$nom} } while (($k, $v)=each(%odbc)){print "$k--------$v\n"} } exit; }
greetings from sunny but cold roma


Replies are listed 'Best First'.
Re: Win32::TieRegistry disperate situation
by dada (Chaplain) on Nov 07, 2002 at 12:18 UTC
    you're doing:
    $lista= $Registry->Connect( "$ip", "LMachine" )
    at this point, $lista contains the Registry of the remote machine. then you do:
    so you're opening a key on the local registry ($Registry).

    it should probably be something like:

    $Remote = $Registry->Connect( "$ip", "LMachine" ) or die "blah...\n"; $lista = $Remote->{"HKEY_LOCAL_MACHINE/..."};

    King of Laziness, Wizard of Impatience, Lord of Hubris

      thnks dada

      what a beast error! But truly speaking the we must cut off the LM as in the following code. may be some one can use it.
      grazie aldo!
      $Remote = $Registry->Connect( "$ip", "LMachine" ) or die "blah...\n"; $lista = $Remote->{"Software/ODBC/ODBC.INI"}or die $!; #$lista= $Registry->Connect( "$ip", "LMachine" )or die "Can't connec +t to HostA's HKEY_LOCAL_MACHINE key: $^E\n"; #$lista=$Registry->{"HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI"}or d +ie "$^E\n"; foreach $nom(keys (%$lista)) { print $nom; chop $nom; $coso= $Remote->{"Software/ODBC/ODBC.INI/$nom"}or die "$^E\n"; print "\n$nom\t".$coso->{DBQ}or die $!; if (defined $coso->{DBQ}) { if($coso->{DBQ}=~/\\([\w -]+\\)(database\\)(\w+\.mdb)/){$odbc{$1.$3 +}=$nom} } while (($k, $v)=each(%odbc)){print "$k--------$v\n"} }

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://211047]
Approved by fireartist
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (3)
As of 2022-07-04 12:43 GMT
Find Nodes?
    Voting Booth?

    No recent polls found