Los objetos COM no se imprimen cuando se llama desde ASP

Este artículo le ayuda a resolver el problema de que un objeto COM envía resultados a una impresora cuando se llama desde páginas Active Server.

Versión del producto original:   páginas Active Server
Número KB original:   184291

Síntomas

Se produce un error en un objeto COM que envía salida a una impresora cuando se llama desde páginas Active Server (ASP), pero funciona correctamente cuando se llama desde una aplicación interactiva. Este objeto COM puede ser un producto comercial, como una aplicación Microsoft Office o un objeto de terceros personalizado. Un mensaje de error común es "Error ClassName '800a01e2' Error de impresora".

Causa

Las API estándar que la mayoría de los objetos usan para imprimir dependen de las entradas del Registro ubicadas en HKEY_CURRENT_USER. Este subárbol del Registro es dinámico. Según el contexto de usuario en el que se ejecute el proceso, se cargará información diferente en este subárbol. Las páginas ASP se ejecutan en IIS, que se ejecuta como la cuenta SYSTEM. Al crear una instancia de un objeto COM en el código ASP, de forma predeterminada, también se ejecutará como la cuenta SYSTEM. De forma predeterminada, la cuenta SYSTEM no tiene ninguna impresora configurada en el Registro.

Solución

Puede configurar impresoras para la cuenta SYSTEM para resolver este problema. Para configurar impresoras para la cuenta SYSTEM, siga estos pasos:

Advertencia

Este método requiere modificar el Registro mediante el Editor del Registro. El uso incorrecto del Editor del Registro puede provocar problemas graves en todo el sistema que pueden requerir la reinstalación Windows corregirlos. Microsoft no puede garantizar que se puedan solucionar los problemas derivados del uso del Editor del Registro. Use esta herramienta bajo su propio riesgo.

  1. Asegúrese de que el usuario con el que ha iniciado sesión en el servidor tenga instaladas las impresoras que desea.

  2. Inicie el Editor del Registro (Regedit.exe).

  3. Seleccione la siguiente clave:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

  4. En el menú Registro, seleccione Exportar archivo del Registro.

  5. En el cuadro de texto Nombre de archivo, escriba c:\Devices.reg.

  6. Seleccione la siguiente clave:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts

  7. En el menú Registro, seleccione Exportar archivo del Registro.

  8. En el cuadro de texto Nombre de archivo, escriba c:\PrinterPorts.reg.

  9. Seleccione la siguiente clave:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows

  10. En el menú Registro, seleccione Exportar archivo del Registro.

  11. En el cuadro de texto Nombre de archivo, escriba c:\Windows.reg.

  12. En el botón Inicio, seleccione Ejecutar. Abra Devices.reg en Bloc de notas escribiendo Bloc de notas Devices.reg en el cuadro de diálogo Ejecutar.

  13. Reemplace el texto HKEY_CURRENT_USER por HKEY_USERS\.DEFAULT.

  14. Guarde el archivo. A continuación, impórtelo en el Registro haciendo doble clic en el archivo en Windows Explorer.

  15. Repita los pasos del 13 al 15 para PrinterPorts.reg y Windows.reg.

Nota

Estos pasos solo funcionan para impresoras locales.

Para permitir que IIS enumere las impresoras de red mediante la cuenta SYSTEM, siga estos pasos.

Nota

Si el proceso se ejecuta en la cuenta de servicio de red, se requieren permisos explícitos para el registro recién creado.

  1. Asegúrese de que ha iniciado sesión actualmente en el servidor como un usuario que tiene instaladas las impresoras de red que desea.

  2. Inicie el Editor del Registro.

  3. Seleccione la siguiente clave:

    HKEY_CURRENT_USER\Printers\Connections

  4. En el menú Registro, seleccione Exportar archivo del Registro.

  5. En el cuadro Nombre de archivo, escriba c:\printconns.reg.

  6. Para abrir el archivo printconns.reg en Bloc de notas, seleccione Inicio , seleccione Ejecutar , escriba Bloc de notas printconns.reg en el cuadro Abrir y, a continuación, seleccione Aceptar.

  7. Reemplace el texto HKEY_CURRENT_USER por el texto HKEY_USERS\.DEFAULT .

  8. Guarde el archivo.

  9. Para importar el archivo en el Registro, haga doble clic en el archivo en Windows Explorer.

  10. Reinicie el servicio Print Spooler.