COM- RegisterEventSource

Configurare noua (How To)

Situatie

Avem eroarea: The description for Event ID ‘10031’ in Source ‘COM’ cannot be found.  The local computer may not have the necessary registry information or message DLL files to display the message, or you may not have permission to access them.  The following information is part of the event:'{95CABCC9-BC57-4C12-B8DF-BA193232AA01}’

Solutie

Pasi de urmat

Un nume de parametru de sursa incorect a fost transferat catre RegisterEventSource.

Asigurați-vă că numele sursei din registru se potrivește cu ceea ce este trecut la RegisterEventSource. Această funcție va reuși chiar dacă sursa nu este găsită în registru. Numele sursei din registru trebuie să fie într-o subcheie de:

 

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLog

Calea spre fișierul .dll sau .exe din registry este incorectă. În valoarea de registry numită EventMessageFile găsită la:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSet 
      ServicesEventLogApplicationsourcename
 
verificați dacă calea către fișierul .dll sau .exe este corectă și numele fișierului .dll sau .exe este corect.
 În acest caz, aplicația Event Viewer nu reușește să încarce sursa resurselor mesajelor. 
De asemenea, dacă utilizați% SystemRoot% sau altă macrocomandă, trebuie să utilizați tipul de valoare a regiștrilor REG_EXPAND_SZ. În caz contrar, macroul nu se extinde.

Sursa de mesaj înregistrată este fișierul .dll sau .exe greșit. În valoarea de registry numită EventMessageFile găsită la:

 

 HKEY_LOCAL_MACHINESYSTEMCurrentControlSet 
         ServicesEventLogApplicationsourcename

verificați  calea către fișierul .dll sau .exe este cea care conține resursele așteptate ale mesajului. 
Aveți grijă să enumerați un EventMessageFile fără o cale și să aveți mai multe fișiere cu același nume.
 Vizualizatorul de evenimente urmează regulile pentru a găsi sursa mesajului utilizând algoritmul de căutare documentat în comentariile pentru API-ul LoadLibrary.

Pentru Windows NT 4.0, trebuie să știți dacă numele DLL este sau nu este afișat în registry ca și KnownDLL la sistem, deoarece DLL reconstruit nu va fi folosit până când nu reporniți.
 Căutați în Baza de cunoștințe Microsoft cuvintele cheie WinNT și KnownDLL pentru informații suplimentare despre acest subiect.

Resursele mesajelor nu sunt legate în sursa EventMessageFile.

.O versiune a eșantionului Logging nu a reușit să includă fișierul .rc ca parte a construirii în makefile. Ca rezultat, DLL-ul este construit, însă resursele de mesaje nu sunt incluse în construcție. Unii dezvoltatori au încercat să includă fișierul .bin, care este trimis de la compilatorul de mesaje, ca resursă. Aceasta nu leagă corespunzător resursa la DLL. Trebuie să utilizați fișierul .rc care este ieșit din compilarea mesajelor deoarece marchează resursa cu un ID de 1 și tipul 11 (RT_MESSAGETABLE). Acest lucru este necesar pentru Vizualizatorul de evenimente pentru a găsi resursele mesajului.

Dacă utilizați Visual C ++ pentru a construi DLL-ul EventMessageFile, trebuie să adăugați fișierul .rc care este ieșit din compilatorul de mesaje ca fișier sursă al proiectului Visual C ++. Aceasta va determina Visual C ++ să compileze fișierul .rc și apoi să lege resursele la DLL.

Asigurați-vă că ID-ul corect este trecut la funcția ReportEvent.

Mulți cred că numărul de identificare literal găsit în fișierul .mc este ID-ul corect. Acest lucru nu se întâmplă deoarece compilatorul mesajului în ordine biți OR este numărul de identificare în LOWORD și biți OR în biblioteca de severitate și facilitate în HIWORD. O aplicație trebuie să utilizeze întotdeauna numele simbolic în fișierul antet care este ieșit din compilatorul de mesaje.

Verificați instrucțiunea MessageIdTypedef = din fișierul .mc. Unele fișiere .mc exemplu arată cum se definește MessageIDTypedef la WORD pentru ID-uri de categorii. Totuși, acest lucru generează ID-uri de evenimente pentru a pierde cuvântul HIWORD. Pentru a corecta această problemă, definiți MessageIdTypedef = o singură dată și setați-o la DWORD.

De asemenea, asigurați-vă că linia de comandă MC -c este utilizată în mod consecvent pentru resursele de mesaje și fișierul antet. Comutatorul -c pornește un pic în HIWORD al ID-ului mesajului.

Event Viewer nu a fost repornit de când ați adăugat intrarea EventMessageFile în registry.

Event Viewer stochează DLL-urile pe care le încarcă pentru sursele evenimentului. Dacă ați schimbat registrul pentru a da un nume sau o sursă corectă după ce a fost pornit vizualizatorul de evenimente, trebuie să reporniți Event Viewer.

Tip solutie

Permanent

Voteaza

(17 din 42 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?