Tengo un instalador de Perl de 32 bits. Al usar esto, necesito poder instalar y desinstalar aplicaciones de 32 y 64 bits.¿Cómo hago para que el Perl de 32 bits lea el registro de Windows de 64 bits?
La instalación de 32 y 64 bits está bien. Desinstalar 32 bits también está bien.
Sin embargo, tengo un problema al desinstalar las aplicaciones de 64 bits.
La aplicación solo conoce el nombre de la aplicación como se ve en Agregar Eliminar programas en el panel de control. Por ejemplo, podría ser "Winzip 14.0", que es el nombre para mostrar de Winzip.
Utilizo el siguiente enfoque para la desinstalación: atravieso HKLM/Software/Microsoft/Windows/CurrentVersion/Uninstall
y analizo las claves presentes allí para ver si Winzip está haciendo la correspondencia. Si es así, obtengo la cadena de desinstalación desde allí.
my $register = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
$HKEY_LOCAL_MACHINE->Open($register,$hKey)|| die $!;
#Then parse all the nodes and fetch the uninstall string
Si la aplicación es una instalación de 64 bits, entonces la información de desinstalación residen en HKLM/Software/Microsoft/Windows/CurrentVersion/Uninstall
.
Sin embargo, el código de instalador Perl dado anteriormente es tratar de leer de HKLM/Software/WOW6432Node/Microsoft/Windows/CurrentVersion/Uninstall
y no encuentra la instalación allí.
Entonces, ¿cómo hago que el código Perl se ejecute en un proceso de 32 bits para leer el valor de registro encontrado en la sección de 64 bits? Soy consciente de la API RegOpenKey()
que toma el parámetro KEY_WOW64_64KEY
. Pero dado que es una API de Windows, no sé si eso ayudará. Incluso entonces, ¿hay alguna otra alternativa?
posible duplicado de [Lectura del registro de Windows en Perl] (http://stackoverflow.com/questions/30269931/reading-from-windows-registry-in-perl) –