Objetos COM não são impressos quando chamados de ASP

Este artigo ajuda você a resolve o problema que um objeto COM envia a saída para uma impressora falha quando chamado do Active Server Pages.

Versão original do produto: Páginas do Servidor Ativo
Número de KB original: 184291

Sintomas

Um objeto COM que envia a saída para uma impressora falha quando chamado do ASP (Active Server Pages), mas funciona corretamente quando chamado de um aplicativo interativo. Esse objeto COM pode ser um produto comercial, como um aplicativo do Microsoft Office, ou um objeto personalizado de terceiros. Uma mensagem de erro comum é "Erro className '800a01e2' Erro da impressora".

Motivo

As APIs padrão que a maioria dos objetos usam para imprimir dependem de entradas de registro localizadas em HKEY_CURRENT_USER. Esse hive de registro é dinâmico. Dependendo do contexto de usuário em que o processo está em execução, diferentes informações serão carregadas nesse hive. As páginas ASP são executadas em IIS, que está em execução como a conta SYSTEM. Quando você cria uma instância de um objeto COM no código ASP, por padrão, ele também será executado como a conta SYSTEM. Por padrão, a conta SYSTEM não tem impressoras configuradas no registro.

Resolução

Você pode configurar impressoras para a conta SYSTEM para resolve esse problema. Para configurar impressoras para a conta SYSTEM, execute as seguintes etapas:

Aviso

Esse método exige que você modifique o registro usando a Editor do Registro. Usar o Registro Editor incorretamente pode causar sérios problemas em todo o sistema que podem exigir que você reinstale o Windows para corrigi-los. A Microsoft não pode garantir que quaisquer problemas resultantes do uso de Editor do Registro possam ser resolvidos. Use essa ferramenta por sua conta e risco.

  1. Verifique se o usuário no momento em que você está conectado no servidor tem as impressoras desejadas instaladas.

  2. Inicie o Editor do Registro (Regedit.exe).

  3. Selecione a seguinte chave:

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

  4. No menu Registro , selecione Exportar Arquivo do Registro.

  5. Na caixa de texto Nome do Arquivo , digite c:\Devices.reg.

  6. Selecione a seguinte chave:

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

  7. No menu Registro , selecione Exportar Arquivo do Registro.

  8. Na caixa de texto Nome do Arquivo , digite c:\PrinterPorts.reg.

  9. Selecione a seguinte chave:

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

  10. No menu Registro , selecione Exportar Arquivo do Registro.

  11. Na caixa de texto Nome do Arquivo , digite c:\Windows.reg.

  12. No botão Iniciar , selecione Executar. Abra Devices.reg no Bloco de Notas digitando Devices.reg do Bloco de Notas na caixa de diálogo Executar .

  13. Substitua o texto HKEY_CURRENT_USER por HKEY_USERS\.DEFAULT.

  14. Salve o arquivo. Em seguida, importe-o para o registro clicando duas vezes no arquivo no Windows Explorer.

  15. Repita as etapas 13 a 15 para PrinterPorts.reg e Windows.reg.

Observação

Essas etapas funcionam apenas para impressoras locais.

Para habilitar o IIS a enumerar as impressoras de rede usando a conta SYSTEM, siga estas etapas.

Observação

Se o processo estiver em execução na conta do Serviço de Rede, serão necessárias permissões explícitas para o registro recém-criado.

  1. Verifique se você está conectado atualmente ao servidor como um usuário que tem as impressoras de rede desejadas instaladas.

  2. Inicie o Editor do Registro.

  3. Selecione a seguinte chave:

    HKEY_CURRENT_USER\Printers\Connections

  4. No menu Registro , selecione Exportar Arquivo do Registro.

  5. Na caixa Nome do Arquivo , digite c:\printconns.reg.

  6. Para abrir o arquivo printconns.reg no Bloco de Notas, selecione Iniciar, selecione Executar, digite Bloco de Notas printconns.reg na caixa Abrir e selecione OK.

  7. Substitua o texto HKEY_CURRENT_USER pelo texto HKEY_USERS\.DEFAULT.

  8. Salve o arquivo.

  9. Para importar o arquivo para o registro, clique duas vezes no arquivo no Windows Explorer.

  10. Reinicie o serviço Print Spooler.