miércoles, junio 26, 2013

Solución al error de "Formato de controlador de dispositivo virtual" / Solution to the "Format virtual device driver" error


Trabajé con un viejo programa creado por Unesco, esencial para un centro de documentación.  La inmensa organización creadora abandonó el programa por allá en el 2003.

Instalé la descarga de prueba de Lavasoft Internet Security, un buen antivirus, a decir verdad.  Sólo un pequeño detalle: al desistalarlo, el viejo software de biblioteca no volvió a funcionar.  Al hacer doble clic al acceso directo en Windows Vista salía una ventana titulada "Subsistema MS-DOS de 16 bits" con el siguiente texto:

"SYSTEM\CurrentControlSet\Control\VirtualDeviceDrivers. El formato del controlador de dispositivos virtuales en el Registro no es válido. Elija 'Cerrar' para finalizar la aplicación".

Fui al programa ejecutable y le di doble clic.  Nada.  Bajé el instalador para re-instalarlo y, al darle doble clic, salió otra vez la bendita ventanita: "Subsistema MS-DOS de 16 bits..."

Paseé por foros, revisé y revisé el sistema de soporte de Microsoft y ninguna de las opciones de solución que ofrecía me sirvió.  Intenté una por una (todas son casi lo mismo) y volvía y salía la ventanita del "Subsistema...".

Es un problema muy común en programas viejos que funcionan en MS-DOS o, cosa rara, nuevos que siguen usando el subsistema de 16 bits en pleno 2013.

Esta es la solución que ofrece Microsoft:

  1. Inicie el Editor del Registro (Regedt32.exe o Regedit.exe).

    NOTA: en Windows XP, Regedit.exe y Regedt32.exe se han integrado en un único programa que combina las características de los dos editores del Registro en Windows 2000.


  2. Busque y seleccione el valor siguiente:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\VirtualDeviceDrivers\VDD


  3. En el menú Edición, haga clic en Eliminar.


  4. En el menú Edición, seleccione Nuevo y haga clic en Valor multicadena.


  5. Escriba VDD en el cuadro Nombre de valor y presione ENTRAR.


  6. Salga del Editor del Registro. 

(en http://support.microsoft.com/kb/314452/es; es para XP, pero es lo mismo para Vista; hasta donde sé, sólo las versiones de red [NT] tienen alguna diferencia)

Bueno, en mi caso, el valor VirtualDeviceDrivers no existía.  Algún antivirus o programa de optimización me habrá hecho el favor...

La cuestión está en los detalles:  creaba la clave como dicen, pero la famosa ventanita de "Subsistema..." volvía y salía.

Busqué y busqué un encontré un foro (ya no recuerdo cual) que, de pura casualidad, decía que había que crear la clave dándole clic derecho a Control.  ¡Ahí intuí la solución!

Ventana inicial de Regedit

El editor del registro (Regedit) muestra el árbol de carpetas a la izquierda y el contenido de cada una a la derecha.  Para encontrar Control, se debe dar clic en HKEY_LOCAL_MACHINE (una de las pocas que aparece de una la primera vez que se abre Regedit), luego doble clic en SYSTEM, y lo mismo para CurrentControlSet.  Ahí aparecerá, por fin, Control.

En mi caso no existía VirtualDeviceDrivers.  Si aparece, toca borrarlo, cerrar Regedit y volverlo a abrir.  Normalmente, al abrirlo de nuevo, aparece abierta la última clave que uno revisó o editó.

La solución está en darle clic derecho a Control y luego en Nuevo en el menú contextual que sale.  Sale otro submenú con varias opciones.  Escoger la primera: Clave.  Aparece una clave con nombre automático seleccionado en el árbol de la izquierda.  Darle el nombre de VirtualDeviceDrivers.

Ahora sí, ir al menú Edición, seleccionar Nuevo y hacer clic en Valor multicadena.

Aparecerá un valor con nombre automático seleccionado a la derecha de la ventana, no en el árbol.  Es decir, dentro de Control, no como una carpeta.  La clave creada antes, VirtualDeviceDrivers, debe aparecer a la izquierda, en el árbol, como otra carpeta dentro de Control.

Escribir VDD en el cuadro Nombre de valor y presionar Enter.

Salir de Regedit.

En mi caso, el viejo programa de biblioteca volvió a funcionar con toda la normalidad.  ¡Ojalá no les toque dar tantas vueltas como a mí!!


Translation to English:

Solution to the "format virtual device driver" error


I worked with an old program created by Unesco, essential for a documentation center. The huge author organization left the program "as is" in 2003.

I downloaded and installed the trial version of Lavasoft Internet Security, a good antivirus, actually. Only one small detail: when uninstalled, the old library software did not work again. Double-clicking the shortcut on Windows Vista left a window titled "MS-DOS Subsystem 16-bit" with the following:

"SYSTEM \ CurrentControlSet \ Control \ VirtualDeviceDrivers. The format of the virtual device driver in the registry is invalid. Choose 'Close' to terminate the application."

I went to the executable program and gave double click. Nothing. Downloaded the installer to re-install and, when I double click on it, it went out again the small window: "MS-DOS Subsystem 16-bit ..."

I browsed around in forums, checked and checked the Microsoft support system and the solutions options offered did not help me. I tried one by one (all are about the same) and the small window of the "subsystem..." prompted again.

It is a very common problem in old programs running on MS-DOS or, as rare thing, new ones still using the 16-bit subsystem in 2013.

This is the solution that Microsoft provides:

  1. Start the Registry Editor (Regedit.exe or Regedt32.exe).

    NOTE: In Windows XP, Regedit.exe and Regedt32.exe have been integrated into a single program that combines features of the two registry editors in Windows 2000.


  2. Locate and select the following value:
    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ VirtualDeviceDrivers \ VDD


  3. On the Edit menu, click Delete.


  4. On the Edit menu, select New, and then click Multi Value.


  5. Type VDD in the Value Name box, and then press ENTER.


  6. Exit the Registry Editor.

(In http://support.microsoft.com/kb/314452/en , is for XP, but it's the same for Vista, to my knowledge, only network versions [NT] have some differences) .

Well, in my case, there was not the VirtualDeviceDrivers value. Some antivirus or optimization program did me the favor ...

The question is in the details: I created the key as they say, but the famous little window of "subsystem..." went back.

I searched and searched and found a forum (I can not remember which) that, by chance, said that we had to create the key right-clicking in Control. There I guessed the solution!

Regedit starting window

The registry editor (Regedit) shows the folder tree on the left and the content of each one at right. To find Control, you must click on HKEY_LOCAL_MACHINE (one of the few that appears the first time you open Regedit), then double-click SYSTEM, and the same to CurrentControlSet. Control appears there finally.

In my case there was not VirtualDeviceDrivers. If displayed, you have to delete it, close Regedit and restart. Normally, when you open this program again, the last key you revised or edited appears opened.

The solution is to right click control and then in New on the context menu that comes up. Another submenu appears with several options. Choose the first one: Key. A key with automatic name appears selected in the tree on the left. Name it VirtualDeviceDrivers.

Now, go to the Edit menu, select New and then click Multi-String Value.

A value with an automatic name appears selected at the right of the window, not in the tree. I mean within Control, not a folder. The key created earlier, VirtualDeviceDrivers, must appear to the left in the tree, as another folder in Control.

Write VDD in the Value Name and press Enter.

Exit Regedit.

In my case, the old library program worked again normally. May you do not have to take as many laps as I had to take!