Los objetos COM no se pueden imprimir cuando se llama desde ASP

En este artículo se ayuda a resolver el problema que un objeto COM envía la salida a una impresora cuando se llama desde Active Server Pages.

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

Síntomas

Se produce un error en un objeto COM que envía la salida a una impresora cuando se llama desde Active Server Pages (ASP), pero funciona correctamente cuando se llama desde una aplicación interactiva. Este objeto COM podría ser un producto comercial como una aplicación de Microsoft Office o un objeto personalizado de terceros. Un mensaje de error común es "Error de 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. En función del 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 que la cuenta SYSTEM resuelva este problema. Para configurar impresoras para la cuenta SYSTEM, siga estos pasos:

Advertencia

Este método requiere que modifique el Registro mediante la Editor del Registro. El uso incorrecto de Editor del Registro puede causar problemas graves en todo el sistema que pueden requerir que vuelva a instalar Windows para corregirlos. Microsoft no puede garantizar que se puedan resolver los problemas derivados del uso de Editor del Registro. Use esta herramienta a su propio riesgo.

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

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

  3. Seleccione la clave siguiente:

    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 clave siguiente:

    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 clave siguiente:

    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 el Bloc de notas; para ello, escriba 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 el Explorador de Windows.

  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 deseadas.

  2. Inicie el Editor del Registro.

  3. Seleccione la clave siguiente:

    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 el Bloc de notas, seleccione Inicio, 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 el Explorador de Windows.

  10. Reinicie el servicio Print Spooler.