ID do artigo: 194801 - Última revisão: terça-feira, 9 de agosto de 2005 - Revisão: 6.3 ASP (Active Server Pages) retorna erro de tempo de execução de VBScript "800a01ad"
Nesta páginaSintomas
O uso de CreateObject para criar um componente COM em uma página ASP (Active Server Pages) pode resultar no seguinte erro:
Erro de tempo de execução do Microsoft VBScript "800a01ad" O componente ActiveX não consegue criar o objeto
Mais Informações
Cada uma das razões acima se aplica à DLL que implementa o objeto COM, assim como qualquer uma das dependências das DLLs. Por exemplo, se uma DLL COM estiver vinculada estaticamente com uma DLL Win32 e a DLL Win32 estiver faltando no sistema, um erro 800a01ad será gerado.
Existem muitas maneiras de determinar as dependências de DLL. Entre elas estão a ferramenta Depends.exe, que vem com a Plataforma SDK (Software Development Kit) e com o Developer Studio 98 e o utilitário DUMPBIN, que é instalado com o Visual C++. Os seguintes arquivos estão disponíveis para download no Centro de Download da Microsoft: Recolher esta imagem ![]() Recolher esta imagem ![]() Data de lançamento: 25 de junho de 2002 Para obter informações adicionais sobre como baixar arquivos de Suporte da Microsoft, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft: 119591
(http://support.microsoft.com/kb/119591/
)
Como obter arquivos de suporte da Microsoft nos serviços online A Microsoft examinou esse arquivo em busca de vírus. A Microsoft utilizou o mais recente software de detecção de vírus disponível na data em que o arquivo foi publicado. O arquivo está armazenado em servidores de segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo.
Para obter informações adicionais sobre essa ferramenta, visite o seguinte site da Dependency Walker (em inglês): http://www.dependencywalker.com
(http://www.dependencywalker.com)
A Microsoft fornece informações para contato com outras empresas para ajudá-lo a encontrar o suporte técnico. Essas informações para contato podem ser alteradas sem notificação prévia. A Microsoft não garante a precisão dessas informações para contato com outras empresas.
Para usar o Depends, simplesmente execute a ferramenta e abra a DLL em questão. Para usar DUMPBIN para ver as dependências, execute o seguinte em um prompt de comando "dumpbin /IMPORTS <nome da DLL>". O utilitário Depends possui a vantagem de exibir as dependências das dependências. Poderia parecer que uma exibição rápida no Windows Explorer exibisse as mesmas informações, mas foi observado que as informações exibidas nem sempre são completas. A seguir estão informações adicionais sobre cada uma das possíveis causas: DLLs faltando no sistemaA DLL que implementa o objeto COM deve existir no sistema e estar registrada com o caminho correto. Falha na criação de um objeto COM que não está registrado irá gerar um erro diferente:
Erro do objeto do servidor "ASP 0177: 800401f3"
Para verificar se o caminho no Registro está correto, execute o programa RegEdit e procure por PROGID (localizado na chamada CreateObject). A partir da entrada PROGID, grave ou copie o CLSID na Área de transferência e localize a entrada para CLSID. Essa entrada deve conter uma chave InprocServer32 com um caminho para a DLL. A seguir, uma demonstração do fluxo deste processo:
(a partir do arquivo asp)
set obj = Server.CreateObject("BadComponent.Badguy")
(a partir do 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
Os seguintes comandos executados a partir de um prompt de comando verificarão a existência deste arquivo:
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 nenhum arquivo estiver especificado no Registro para a DLL, a DLL deverá existir no caminho do sistema. Uma DLL COM pode ter outras dependências além das DLLs Win32 vinculadas estaticamente (DUMPBIN e Depends.exe mostram DLLs vinculadas estaticamente). Por exemplo, um objeto COM pode chamar LoadLibrary() e chamar funções em uma DLL Win32. Da mesma forma, o controle pode criar objetos COM contidos em DLLs separadas. Qualquer uma dessas DLLs pode estar faltando, registrada inadequadamente ou inacessível devido a segurança. Isso resultaria em um erro de tempo de execução que pode ou não ser encontrado durante a criação do controle. O retorno de S_FALSE do método FinalConstruct() de um controle ATL pode simular um exemplo de falha de controle durante a criação. Isso presume que LoadLibrary() ou CoCreateInstance() falharam em FinalConstruct() e o programador escolheu verificar isso e retornar S_FALSE. O erro gerado nesse caso será similar ao seguinte:
erro "ASP 0115" Erro inesperado /badguy.asp Um erro interceptável ocorreu em um objeto externo. O script não pode continuar sendo executado. Erro do objeto do servidor "ASP 0115: 8000ffff" Falha desse tipo não irá gerar um erro 800a01ad. DLLs que não estão no caminho do sistemaO sistema deve ser capaz de encontrar as DLLs dependentes (vinculadas estaticamente) da DLL que implementa o objeto COM sendo criado. Usando DUMPBIN ou Depends, determine quais são os dependentes das DLLs. Verifique se todas essas DLLs estão no mesmo diretório que a DLL COM ou no caminho do sistema.DLLs não acessíveis pelo sistema devido a configuração de segurançaQuando um cliente solicita uma página ASP (Active Server Pages) a partir de um servidor, a página ASP executa em um contexto de segurança dependente do método de autenticação usado para acessar o servidor da Web. Por exemplo, solicitações anônimas executam no contexto de IUSR_MACHINENAME no qual MACHINENAME é o nome do seu computador. Para obter informações sobre outros métodos de autenticação e considerações de segurança, consulte a documentação do IIS. O que isso significa com relação a um erro 800a01ad é que o usuário autenticado deve ter acesso (por meio de permissões de arquivo NTFS) à DLL COM e todas as DLLs dependentes.Uma análise mais detalhada pode ser usada para determinar se isso é a causa do problema. Usando o Windows Explorer, selecione Propriedades para DLL COM, selecione a guia Segurança e conceda a "todos" pelo menos acesso de leitura à DLL. Faça o mesmo para as DLLs dependentes e diretórios contendo as DLLs. Isso deve eliminar qualquer restrição de segurança que possa estar afetando a criação do objeto COM. A segurança pode ser reforçada após determinar que esse era o problema. Lembre-se, muitas das DLLs dependentes são DLLs de sistema do Windows e já terão pelo menos o acesso "leitura para todos". Não remova esse acesso por engano ao "reforçar" a segurança. (c) Microsoft Corporation 1998, Todos os direitos reservados. Contribuições por Robert E. Duke, Microsoft Corporation. | Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Voltar para o início
