Wir haben ein Perl-Skript, das eine Datei basierend auf dem Inhalt der Windows-Registrierung schreibt. Das Skript muss für die Registrierungsstruktur 32 und 64 ausgeführt werden.Win32 :: TieRegistry ws 64 Bit unter Windows 7 8 10
Mit diesem Befehl "C: \ stdperl \ bin \ perl.exe Skriptname.pl" verarbeiten wir die 32-Bit-Registrierungsstruktur mit diesem Befehl "C: \ stdperl64 \ bin \ perl.exe Skriptname.pl" wir Verarbeiten Sie die 64-Bit-Registrierungsstruktur.
Wir haben: - Das ist Perl, gebaut v5.8.7 für mswin32-x86-Multi-Thread - Dies ist Perl, v5.8.9 gebaut für mswin32-x64-Multi-Thread
Der eingeschränkte Test Fall:
use strict;
use warnings;
use Win32::TieRegistry(ArrayValues=>0, Delimiter=>"/");
use Config;
my ($chiave, $regKey, $key)="";
$chiave='HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI';
$regKey = $Registry->Open($chiave, {Access=> 0x20019});
foreach $key (keys %$regKey){
print"$key: " . $regKey->{"$key"} . "\n";
};
Der obige Code funktioniert nicht, wenn mit perl 64-Bit-Windows 7/8/10 ausgeführt. Stattdessen funktioniert gut, wenn mit Perl 32 Bit auf allen Windows-Version und funktioniert gut auf 64 System mit Windows Server 2012, Windows 2003 Windows 2008 ausgeführt.
Warum ?!
Das Skript ist sehr komplex und alt, undokumentiert und ist die Art von Skript, das niemand "anfassen" oder "umschreiben" will, so dass jede Lampe sehr geschätzt wird.
Wir erhalten keinen Fehler.
einfach, wenn wir das Skript unter Verwendung von 32-Bit-Perl laufen wir erhalten die folgenden:
C:\>x:\stdperl\bin\perl 160609_t05.pl
Aster ODBC Driver/: Win32::TieRegistry=HASH(0x53b61a4)
Microsoft Access Driver (*.mdb)/: Win32::TieRegistry=HASH(0x53b61ec)
...
omissis
....
Oracle in OraClient12c_32/: Win32::TieRegistry=HASH(0x53b627c)
SQLite3 ODBC Driver/: Win32::TieRegistry=HASH(0x53b621c)
Als ich das Skript mit dem 64-Bit-Perl laufen bekomme ich keinen Eintrag.
C:\>x:\stdperl64\bin\perl 160609_t05.pl
C:\>
unter HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI Registrierung gibt es ODBC-Treiber-Spezifikation und es gibt Eintrag auf 32- und 64-hive-Registrierung.
_Win 2012_ ist _Windows Server 2012_? Sie sollten Ihre Frage bearbeiten und sagen. – simbabque
"nicht funktionieren": Achten Sie darauf, eine Fehlermeldung zu enthalten oder zu beschreiben, wie sich Ihr Verhalten von Ihren Erwartungen unterscheidet? – tjd
Beginnen Sie mit der Überprüfung, welchen Fehler Sie bekommen !!! – ikegami