Artigo: 194801 - Última revisão: sexta-feira, 8 de Julho de 2005 - Revisão: 6.4

O Active Server Pages devolve o erro de tempo de execução de VBScript '800a01ad'

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

A utilização de CreateObject para criar um componente COM numa página ASP (Active Server Pages) pode resultar no seguinte erro:
Erro de runtime do Microsoft VBScript '800a01ad'
O componente ActiveX não é possível criar o objecto
Este erro normalmente é gerado porque dynamic-link bibliotecas (DLL) que depende de objectos COM são um dos seguintes procedimentos:
  • Falta do sistema
  • Não no caminho do sistema
  • Não está acessível pelo sistema devido a definições de segurança

Mais Informação

Cada uma das razões acima aplica-se a DLL que implementa o objecto COM, bem como qualquer uma das dependências dll. Por exemplo, se uma DLL COM hiperligações estaticamente para uma DLL Win32 e DLL Win32 está em falta no sistema, será gerado um erro de 800a01ad.

Existem várias formas para determinar as dependências DLL. Entre estes encontram-se a ferramenta de Depends.exe, fornecida com o Platform Software Development Kit (SDK) e Developer Studio 98, e o utilitário DUMPBIN, que é instalado com o Visual C++.

Os ficheiros seguintes estão disponíveis para transferência a partir do Centro de transferências da Microsoft:

Reduzir esta imagemExpandir esta imagem
Download
Download the Dependsia64version2.1.3623.exe package now. (http://download.microsoft.com/download/visualfoxpro7/utility/2.1/w9x2kmexp/en-us/dependsia64version2.1.3623.exe)
Reduzir esta imagemExpandir esta imagem
Download
Download the Dependsx86version2.1.3623.exe package now. (http://download.microsoft.com/download/visualfoxpro7/utility/2.1.3623/w9x2kmexp/en-us/dependsx86version2.1.3623.exe)

Data de edição: Junho 25,2002

Para obter informações adicionais sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591  (http://support.microsoft.com/kb/119591/ ) Como obter ficheiros de suporte da Microsoft a partir de serviços on-line
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada que o ajudam a impedir alterações não autorizadas ao ficheiro. Para mais informações sobre esta ferramenta, visite o seguinte site do Dependency Walker Web:
http://www.dependencywalker.com (http://www.dependencywalker.com)
Microsoft fornece informações de contactos outros fabricantes para ajudar a encontrar suporte técnico. Poderá ser alterado estas informações de contacto sem aviso prévio. Microsoft não garante a precisão destas informações de contacto outros fabricantes.

Para utilizar Depends, basta executar a ferramenta e abrir a DLL em questão. Para utilizar DUMPBIN para visualizar as dependências, execute o seguinte numa linha de comandos "dumpbin /IMPORTS < nome da DLL >". O utilitário Depends tem a vantagem de visualizar dependências de dependências. Apareceria que consultar rapidamente no Explorador do Windows irá apresentar as mesmas informações, mas tem sido observado que as informações apresentadas não são sempre concluídas.

Mais informações sobre cada um dos possíveis faz com que se segue:

DLL em falta a partir do sistema

A DLL que implementa o objecto COM tem de existir no sistema e ser registada com o caminho correcto. Falha de criação de um objecto COM que não está registado, na realidade, irá gerar um erro diferente:
Server object error ' ASP 0177: 800401f3 '

Para verificar o caminho do registo está correcto, execute o programa RegEdit e procure o PROGID (encontrado na chamada CreateObject). A entrada PROGID, gravar ou copiar o CLSID para a área de transferência e localize a entrada para o CLSID. Esta entrada deve conter uma chave InprocServer32 com um caminho para a DLL. O seguinte ilustra o fluxo deste processo:
   (from the asp file)
   set obj = Server.CreateObject("BadComponent.Badguy")

   (from RegEdit)
   HKEY_CLASSES_ROOT\BadComponent.BadGuy\CLSID
      {683DA7E0-5C73-11D2-80F6-0000F87A8236}

   HKEY_CLASSES_ROOT\CLSID\{683DA7E0-5C73-11D2-80F6-0000F87A8236}\ 
      InprocServer32 E:\Programs\COMPON~1\BADCOM~1\Debug\BADCOM~1.DLL
				

O seguinte comando executado a partir de uma linha de comandos irá verificar a existência deste ficheiro:
   E:\>cd E:\Programs\COMPON~1\BADCOM~1\Debug
   E:\Programs\COMPON~1\BADCOM~1\Debug>dir BADCOM~1.DLL

   10/14/98  11:18a               241,739 BadComponent.dll

                  1 File(s)        241,739 bytes
                             2,038,755,328 bytes free
				

Se não for especificado um caminho no registo para a DLL, a DLL tem de existir no caminho do sistema.

Uma DLL COM pode ter dependências diferente dll Win32 que está estaticamente ligada (DUMPBIN e Depends.exe apresentação dll estaticamente ligadas). Por exemplo, um objecto COM poderá chamar LoadLibrary() e chamar funções de uma DLL Win32. Do mesmo modo, o controlo poderá criar objectos COM estão contidos no dll separadas. Qualquer uma destas dll poderá estar em falta, incorrectamente registado, no inacessíveis devido a segurança. Isto resultará num erro de tempo de execução que podem ou não pode ser encontrado durante a criação do controlo. Devolver S_FALSE do método FinalConstruct() de um controlo ATL pode simular um exemplo de controlo de maneira a falhar durante a criação. Isto assume LoadLibrary() ou CoCreateInstance() falha em FinalConstruct() e o programador optar por procurar este e devolver S_FALSE. Erro gerado neste caso será semelhante à seguinte:
erro 'ASP 0115'
Erro inesperado
/badguy.asp
Ocorreu um erro detectável num objecto externo. O script não pode
continue em execução.
Server object error ' ASP 0115: 8000ffff '

Falha deste tipo não irá gerar um erro de 800a01ad.

DLL não consta do caminho do sistema

O sistema tem não conseguir localizar o dependentes dll (estaticamente ligadas) da DLL que implementa o objecto COM que está a ser criado. Utilizar DUMPBIN ou Depends, determine quais são as DLLs dependentes. Verifique se todas destas DLLs estão no mesmo directório como DLL COM ou no caminho do sistema.

DLL não acessíveis pelo sistema devido a definição de segurança

Quando um cliente pede uma página ASP (Active Server Pages) a partir de um servidor, a página ASP é executado num dependente do contexto de segurança no método de autenticação utilizado para aceder ao servidor da Web. Por exemplo, pedidos anónimos executar no contexto de IUSR_MACHINENAME onde MACHINENAME é o nome do computador. Para obter informações sobre outros métodos de autenticação e considerações de segurança, consulte a documentação do IIS. Isto significa em termos de erro 800a01ad é o utilizador autenticado tem acesso (através de permissões de ficheiros NTFS) a DLL COM e todos os dependentes dll.

Uma abordagem shotgun pode ser utilizada para determinar se é esta a causa do problema. Utilizar o Explorador do Windows, seleccione propriedades para a DLL COM, seleccione o separador Segurança e conceder "todos", pelo menos, acesso de leitura para a DLL. Fazer o mesmo para a dll e directórios que contêm as DLLs dependentes. Isto deve eliminar quaisquer restrições de segurança que podem estar a afectar a criação do objecto COM. Segurança pode ser reforçada depois é determinado que era este o problema. Lembre-se, muitas das DLLs dependentes são dll de sistema Windows e terão menos "todos ler" aceder já. Não por engano, removem este acesso quando "apertar" a segurança.

(c) Microsoft Corporation 1998, todos os direitos reservados. Contribuições de Robert e. Duke, Microsoft Corporation.


A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Server 4.0
  • Serviços de informação Internet 5.0 da Microsoft
Palavras-chave: 
kbmt kberrmsg kbprb kbsecurity KB194801 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 194801  (http://support.microsoft.com/kb/194801/en-us/ )