Risolvere l'errore: Messaggio di evento non trovato

Questo articolo consente di risolvere l'errore in Visualizzatore eventi: Messaggio di evento non trovato.

              Versione originale del prodotto: Windows
Numero KB originale: 166902

Sintomi

È possibile che venga visualizzato il messaggio di errore seguente per gli eventi in Visualizzatore eventi:

Impossibile trovare la descrizione dell'ID evento ( <####> ) in Origine (<nome> applicazione). Contiene le seguenti stringhe di inserimento: <il testo del messaggio registrato da ReportEvent>.

Di seguito sono elencate le possibili cause e altre informazioni su come risolvere il problema. La causa può essere una o più delle seguenti:

Parametro del nome di origine non corretto passato a RegisterEventSource

Assicurarsi che il nome di origine nel Registro di sistema corrisponda a quanto passato a RegisterEventSource. Questa funzione avrà esito positivo anche se l'origine non viene trovata nel Registro di sistema. Il nome di origine nel Registro di sistema deve trovarsi in una sottochiava di HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog.

In genere un'origine dell'applicazione viene elencata sotto la sottochiava dell'applicazione.

Percorso del file .dll o .exe nel Registro di sistema non corretto

Nel valore del Registro di sistema denominato EventMessageFile trovato in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcenameverificare che il percorso del file .dll o .exe sia corretto e che il nome del file .dll o .exe sia corretto. In questo caso, l'applicazione Visualizzatore eventi non riesce a caricare l'origine delle risorse del messaggio. Inoltre, se si utilizza %SystemRoot% o un'altra macro, è necessario utilizzare il tipo di valore del Registro di sistema REG_EXPAND_SZ. In caso contrario, la macro non viene espansa.

L'origine del messaggio registrata è il file di .dll o .exe errato

Nel valore del Registro di sistema denominato EventMessageFile trovato in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcenameverificare che il percorso del file .dll o .exe contenga le risorse del messaggio previste. Prestare attenzione a elencare un senza EventMessageFile un percorso e ad avere più file con lo stesso nome. Visualizzatore eventi segue le regole per trovare l'origine del messaggio usando l'algoritmo di ricerca documentato nei commenti per l'API LoadLibrary.

Le risorse dei messaggi non sono associate nell'origine EventMessageFile

Una versione dell'esempio di registrazione non è riuscita a includere il file rc come parte della compilazione nel makefile. Di conseguenza, la DLL viene compilata, ma nella compilazione non sono incluse risorse di messaggio. Alcuni sviluppatori hanno cercato di includere il file .bin, che viene restituito dal compilatore di messaggi, come risorsa. Non associa correttamente la risorsa alla DLL. È necessario usare il file rc restituito dal compilatore di messaggi, perché contrassegna la risorsa con un ID 1 e il tipo 11 (RT_MESSAGETABLE). È necessario che Visualizzatore eventi trovino le risorse del messaggio.

Se si usa Visual C++ per compilare la EventMessageFile DLL, è necessario aggiungere il file rc restituito dal compilatore di messaggi come file di origine del progetto Visual C++. Verrà indicato a Visual C++ di compilare il file rc e quindi collegare le risorse alla DLL.

Assicurarsi che l'ID corretto venga passato alla funzione ReportEvent

Molti pensano che il numero di ID letterale trovato nel .mc file sia l'ID corretto. Non è così, perché il compilatore di messaggi OR bit per bit il numero ID in LOWORD e bit per bit OR la gravità e i bit della HIWORDstruttura in . Un'applicazione deve sempre usare il nome simbolico nel file di intestazione che viene restituito dal compilatore di messaggi.

Verificare l'istruzione MessageIdTypedef= nel .mc file. Alcuni file di esempio .mc mostrano come definire la MessageIDTypedef proprietà per WORD gli ID categoria. Tuttavia, fa sì che gli ID evento perdono l'oggetto HIWORD. Per risolvere questo problema, definire MessageIdTypedef= una sola volta e impostarlo DWORDsu .

Assicurarsi inoltre che la riga di comando MC -c venga usata in modo coerente per le risorse del messaggio e il file di intestazione. L'interruttore -c si attiva un po' nell'id HIWORD del messaggio.

Visualizzatore eventi non viene riavviato dopo aver aggiunto la voce EventMessageFile

Visualizzatore eventi memorizza nella cache le DLL caricate per le origini eventi. Se il Registro di sistema è stato modificato per assegnare una directory o un nome di origine appropriato dopo l'avvio del Visualizzatore eventi, è necessario riavviare Visualizzatore eventi.