MC.exe (compilador de mensajes), rc.exe, link.exe para generar .dll para EventMessageFile

Buenas tardes, queridos lectores de Habr. Esta publicación es una guía para crear una biblioteca .dll dinámica que contiene los mensajes necesarios para mostrar en un registrador personalizado ubicado en Windows Event Viewer \ Application and Services Logs \ uuuu (como ejemplo).



En el registro personalizado, a menudo puede ver mensajes cuya descripción contiene:



Esto significa que el origen del evento aaaa no contiene el conjunto necesario de ID y Descripción.

Para corregir esta situación, es necesario:

1. Abra regedit en la siguiente ruta: HKLM \ SYSTEM \ CurrentControlSet \ Services \ EventLog y asegúrese de que su partición existe.

2. Cree eventMessage.txt en el que necesite colocar sus parámetros, por ejemplo con msdn , guárdelo en la codificación necesaria Windows-1251 o Unicode y el formato eventMessage.mc.

Nota: cuando complete eventMessage con su ID y descripción, SIEMPRE después de la descripción, coloque un punto en una nueva línea y luego coloque el carro en una nueva línea.

Un ejemplo:

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

Si no tiene en cuenta esta característica, puede haber errores imprevistos durante la compilación.

3. Ejecute cmd como administrador.

4. Ejecute el comando: mc.exe -u C: \ SomeFolder \ eventMessage.mc -r C: \ SomeFolder \ result

Nota : mc.exe, en el caso particular, se encuentra en C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86 lugar del formato -u (Unicode) , puede usar -A (W-1251 ANSI, ) y la opción -r es la ubicación de salida donde se guardarán los archivos después de la compilación.

Después de ejecutar el comando, se creará lo siguiente: el archivo binario y el archivo eventMessage.rc en C: \ SomeFolder \ result

5. Ejecute el comando: rc.exe C: \ SomeFolder \ result \ eventMessage.rc

Nota : rc.exe se encuentra en el mismo directorio que mc.exe.

Después de la compilación, se creará el archivo eventMessage.res, que es necesario para crear una biblioteca dinámica.

6. Ejecute el comando: link.exe -dll -noentry /out:C:\SomeFolder\result\OurMessageSet.dll C: \ SomeFolder \ result \ eventMessage.res.

Nota: link.exe se encuentra, en un caso particular, en C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\VC\bin

7. Felicitaciones, hemos creado la tan esperada biblioteca con usted, pero eso no es todo. Entramos en regedit a nuestro directorio desde el paso 1. En el campo de directorio, cree un parámetro de cadena (valor de cadena), nombrando esta creación en EventMessageFile, y en el valor indique la ruta a nuestra biblioteca: C: \ SomeFolder \ result \ OurMessageSet.dll. Se ve así:



Herramientas revisadas: mc.exe, rc.exe, link.exe.

Que la fuerza te acompañe.

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


All Articles