MC.exe (Nachrichten-Compiler), rc.exe, link.exe zum Generieren einer DLL für EventMessageFile

Guten Tag, liebe Leser von Habr. Dieser Beitrag ist eine Anleitung zum Erstellen einer dynamischen DLL-Bibliothek, die die Nachrichten enthält, die für die Anzeige in einem benutzerdefinierten Protokollierer erforderlich sind, der sich (als Beispiel) in Windows-Ereignisanzeige \ Anwendungs- und Dienstprotokolle \ uuuu befindet.



Im benutzerdefinierten Protokoll werden häufig Nachrichten angezeigt, deren Beschreibung Folgendes enthält:



Dies bedeutet, dass die JJJJ-Ereignisquelle nicht den erforderlichen Satz an ID und Beschreibung enthält.

Um diese Situation zu korrigieren, ist Folgendes erforderlich:

1. Öffnen Sie regedit unter folgendem Pfad: HKLM \ SYSTEM \ CurrentControlSet \ Services \ EventLog und stellen Sie sicher, dass Ihre Partition vorhanden ist.

2. Erstellen Sie eventMessage.txt, in der Sie Ihre Parameter platzieren müssen, z. B. mit msdn , und speichern Sie sie in der erforderlichen Codierung Windows-1251 oder Unicode und im Format eventMessage.mc.

Hinweis: Wenn Sie eventMessage mit Ihrer ID und Beschreibung füllen, setzen Sie IMMER nach der Beschreibung einen Punkt in eine neue Zeile und anschließend den Wagen in eine neue Zeile.

Ein Beispiel:

MessageId=0x1 SymbolicName=CAT_1 Language=English OutDescription for your application . MessageId=0x2 

Wenn Sie diese Funktion nicht berücksichtigen, können beim Kompilieren unvorhergesehene Fehler auftreten.

3. Führen Sie cmd als Administrator aus.

4. Führen Sie den folgenden Befehl aus: mc.exe -u C: \ SomeFolder \ eventMessage.mc -r C: \ SomeFolder \ result

Hinweis : mc.exe befindet sich im speziellen Fall in C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86 Anstelle des Formats -u (Unicode) können Sie -A (W-1251 ANSI, ) und die Option -r ist der Ausgabeort, an dem die Dateien nach dem Kompilieren gespeichert werden.

Nach dem Ausführen des Befehls wird Folgendes erstellt: die Binärdatei und die Datei eventMessage.rc in C: \ SomeFolder \ result

5. Führen Sie den folgenden Befehl aus: rc.exe C: \ SomeFolder \ result \ eventMessage.rc

Hinweis : rc.exe befindet sich im selben Verzeichnis wie mc.exe.

Nach der Kompilierung wird die Datei eventMessage.res erstellt, die zum Erstellen einer dynamischen Bibliothek erforderlich ist.

6. Führen Sie den folgenden Befehl aus: link.exe -dll -noentry /out:C:\SomeFolder\result\OurMessageSet.dll C: \ SomeFolder \ result \ eventMessage.res.

Hinweis: link.exe befindet sich in einem bestimmten Fall unter C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\VC\bin

7. Herzlichen Glückwunsch, wir haben mit Ihnen die lang erwartete Bibliothek erstellt, aber das ist noch nicht alles. Ab Schritt 1 gehen wir zu regedit in unser Verzeichnis. Erstellen Sie im Verzeichnisfeld einen Zeichenfolgenparameter (Zeichenfolgenwert), benennen Sie diese Erstellung in EventMessageFile und geben Sie im Wert den Pfad zu unserer Bibliothek an: C: \ SomeFolder \ result \ OurMessageSet.dll. Es sieht so aus:



Überprüfte Tools: mc.exe, rc.exe, link.exe.

Möge die Macht mit dir sein.

Source: https://habr.com/ru/post/de426121/


All Articles