¿Dónde estará mi NAX?

Está claro, lo robaron ayer por la noche mientras dormía…

…aunque a veces es que no buscamos.

No será la primera vez que, estando en una pobre máquina inundada de distintas versiones de nexus por razones que no vienen al caso (desarrollo, pruebas, delitos contra natura…), alguna aplicación que usa el NAX falla, o nos asalta la eterna duda ¿Pienso, luego NAX? Hay un truco…

Bueno, hay una forma para aquellos valientes de pelo en pecho (no necesariamente personas humanas masculinas) que se atrevan a trastear con el temible registro de windows…

…buscando alguna de las claves de los objetos COM que publica la biblioteca NAX:

Una forma directa es buscando el GUID de la “librería” de tipos del Nax (“{944AE2A1-1705-44A0-8983-D50F62DDCE39}”) y mirar en su entrada en HKEY_CLASSES_ROOT\TypeLib. Dentro encontraremos una subcarpeta para la versión (“1.0″ en nuestro caso) y otra que cuelga de esta última con la revisión (“0″). Aquí, en la clave “win32″ estará también la ruta del NAX registrado.

Otra sería, conociendo el GUID de alguno de los objetos COM que se exportan, buscar en HKEY_CLASSES_ROOT\CLSID una entrada con clave que coincida con el GUID. Dentro habrá una clave denominada “InprocServer32″ que contendrá la ruta completa del NAX al que pertenece.

Nota: En sistemas de 64 bits encontraremos que la rama CLSID de los objetos com se encuentra a su vez dentro del nodo <WOW6432Node>, quedando en algo como “HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{FAE51032-B3AD-4310-BC33-54655498E5CB}”. Es la forma que tiene el windows de distinguir que los implementadores de dichas clases COM son de 32 bits.

Y si no conocemos ningun GUID pero sí los nombres de clase (por ejemplo “NAX.Enlace”), podemos averiguar el GUID de aquella buscando una clave con ese nombre directamente en HKEY_CLASSES_ROOT. Contendrá una subclave “Clsid” con el GUID de la clase que podremos usar con el método anterior.

Un ejemplo:

var
  ID: string;
begin
  Result := '';
  with TRegistry.Create(KEY_READ) do
    try
      // Por Biblioteca de tipos
      RootKey := HKEY_CLASSES_ROOT; // {944AE2A1-1705-44A0-8983-D50F62DDCE39} libreria NAX v1.0.0
      if OpenKey('TypeLib\{944AE2A1-1705-44A0-8983-D50F62DDCE39}\1.0\Win32', False) then begin
        Result := ReadString('');
        CloseKey;
        if Result <> '' then Exit;
      end;

      // por classid conocido
      // Recordad de que en 64 bits hay un nodo previo WOW6432Node
      if OpenKey('CLSID\{FAE51032-B3AD-4310-BC33-54655498E5CB}\InprocServer32', False) then begin  //NAX.Enlace
        Result := ReadString('');
        CloseKey;
        if Result <> '' then Exit;
      end;

      // por nombre de clase conocido
      RootKey := HKEY_CLASSES_ROOT; // {944AE2A1-1705-44A0-8983-D50F62DDCE39} libreria
      if OpenKey('NAX.Enlace\Clsid', False) then begin
        ID := ReadString('');
        CloseKey;
        if OpenKey('CLSID\' + ID + '\InprocServer32', False) then
          Result := ReadString('');
        CloseKey;
      end;
    finally
      Free;
    end;
end;

Para aquellos más cobardes, he preparado un programita en Delphi (con código, para aquellos que gusten del sadismo) llamado regnax que dejaré en recursos.

Y eso es todo. Espero que al final lo encontréis… …con sus aparejos.

P.D.: Esta característica no es oficial. Si se le pregunta a algún desarrollador de Nexus muy posiblemente se hará el sueco (aunque nunca se sabe, quizás la sueca) o tratará de interponer a algún compañero mientras huye como si hubiera visto a la mismísima parca. Avisados quedais.

Acerca de El monstruo de Caerbannog

Temible guardián de la gruta que esconde un temible y obscuro secreto...

Publicado el enero 29, 2009 en Desarrolladores, Distribuidores, Implantaciones y etiquetado en , , . Guarda el enlace permanente. Dejar un comentario.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 103 seguidores