Solucionar problemas do erro: mensagem de evento não encontrada
Este artigo ajuda você a solucionar problemas do erro em Visualizador de Eventos: Mensagem de evento não encontrada.
Versão original do produto: Windows
Número de KB original: 166902
Sintomas
A seguinte mensagem de erro pode aparecer para eventos no Visualizador de Eventos:
A descrição da ID do evento ( <####> ) na origem (<nome> do aplicativo) não pôde ser encontrada. Ele contém as seguintes cadeias de caracteres de inserção: <o texto da mensagem registrada pelo ReportEvent>.
Listadas abaixo estão as possíveis causas e mais informações sobre como resolve o problema. A causa pode ser uma ou mais das seguintes:
O parâmetro de nome de origem incorreto é passado para RegisterEventSource
Verifique se o nome de origem no registro corresponde ao que foi passado para RegisterEventSource
. Essa função terá êxito mesmo se a origem não for encontrada no registro. O nome de origem no registro deve estar em uma sub-chave de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
.
Normalmente, uma fonte de aplicativo é listada na sub-chave do aplicativo.
O caminho para .dll ou .exe arquivo no registro está incorreto
No valor do registro chamado EventMessageFile
encontrado em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcename
, verifique se o caminho para o arquivo .dll ou .exe está correto e o nome do arquivo .dll ou .exe está correto. Nesse caso, o aplicativo Visualizador de Eventos não carrega a origem dos recursos da mensagem. Além disso, se você usar %SystemRoot%
ou alguma outra macro, deverá usar o tipo de valor do registro REG_EXPAND_SZ. Caso contrário, a macro não será expandida.
A origem da mensagem registrada é o arquivo de .dll ou .exe errado
No valor do registro chamado EventMessageFile
encontrado em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcename
, verifique se o caminho para o arquivo .dll ou .exe é aquele que contém os recursos de mensagem esperados. Tenha cuidado ao listar um EventMessageFile
sem um caminho e ter vários arquivos com o mesmo nome. Visualizador de Eventos segue as regras para encontrar a fonte da mensagem usando o algoritmo de pesquisa documentado nos comentários da API loadLibrary.
Os recursos de mensagem não estão vinculados na origem EventMessageFile
Uma versão do exemplo de registro em log não conseguiu incluir o arquivo .rc como parte do build no makefile. Como resultado, a DLL é criada, mas nenhum recurso de mensagem é incluído no build. Alguns desenvolvedores tentaram incluir o arquivo .bin, que é a saída do compilador de mensagens, como o recurso. Ele não associa corretamente o recurso à DLL. Você deve usar o arquivo .rc que é saída do compilador de mensagens, pois ele marca o recurso com uma ID de 1 e tipo 11 (RT_MESSAGETABLE
). É necessário que Visualizador de Eventos encontre os recursos da mensagem.
Se você estiver usando o Visual C++ para criar a EventMessageFile
DLL, deverá adicionar o arquivo .rc que é saída do compilador de mensagens como um arquivo de origem do projeto Do Visual C++. Ele dirá ao Visual C++ para compilar o arquivo .rc e, em seguida, vincular os recursos à DLL.
Verifique se a ID correta é passada para a função ReportEvent
Muitos acham que o número de ID literal encontrado no .mc
arquivo é a ID correta. Não é assim, porque o compilador de mensagens bits ORs o número de ID no LOWORD
e bits ORs a gravidade e os bits de instalação no HIWORD
. Um aplicativo deve sempre usar o nome simbólico no arquivo de cabeçalho que é saída do compilador de mensagens.
Verifique a MessageIdTypedef=
instrução no .mc
arquivo. Alguns arquivos de exemplo .mc
mostram como definir o MessageIDTypedef
para WORD
IDs de categoria. No entanto, isso faz com que as IDs de Evento soluram o HIWORD
. Para corrigir esse problema, defina MessageIdTypedef=
apenas uma vez e defina-o como DWORD
.
Certifique-se também de que a linha de comando MC -c
seja usada consistentemente para os recursos de mensagem e o arquivo de cabeçalho. A -c
opção ativa um pouco na HIWORD
ID da mensagem.
Visualizador de Eventos não é reiniciada desde que você adicionou a entrada EventMessageFile
Visualizador de Eventos armazena em cache as DLLs que carrega para fontes de evento. Se você tiver alterado o registro para fornecer um diretório ou nome de origem adequado após o início do visualizador do evento, você precisará reiniciar Visualizador de Eventos.