MC.exe (compilador de mensagens), rc.exe, link.exe para gerar .dll para EventMessageFile

Boa tarde, queridos leitores de Habr. Esta postagem é um guia para a criação de uma biblioteca .dll dinâmica que contém as mensagens necessárias para exibição em um criador de logs personalizado localizado em Windows Event Viewer \ Logs de Aplicativos e Serviços \ uuuu (como exemplo).



No log personalizado, muitas vezes você pode ver as mensagens cuja descrição contém:



Isso significa que a fonte de eventos aaaa não contém o conjunto necessário de ID e Descrição.

Para corrigir esta situação, é necessário:

1. Abra o regedit no seguinte caminho: HKLM \ SYSTEM \ CurrentControlSet \ Services \ EventLog e verifique se a partição existe.

2. Crie eventMessage.txt no qual você precisa colocar seus parâmetros, por exemplo , com msdn , salve na codificação necessária Windows-1251 ou Unicode e formate eventMessage.mc.

Nota: ao preencher eventMessage com seu ID e descrição, SEMPRE após a descrição, coloque um ponto em uma nova linha e depois coloque o carro em uma nova linha.

Um exemplo:

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

Se você não levar esse recurso em consideração, poderá haver erros imprevistos durante a compilação.

3. Execute o cmd como administrador.

4. Execute o comando: mc.exe -u C: \ SomeFolder \ eventMessage.mc -r C: \ SomeFolder \ result

Nota : mc.exe, no caso específico, está localizado em C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86 vez do formato -u (Unicode) , você pode usar -A (W-1251 ANSI, ) e a opção -r é o local de saída em que os arquivos serão salvos após a compilação.

Após a execução do comando, será criado o seguinte: o arquivo binário e o arquivo eventMessage.rc em C: \ SomeFolder \ result

5. Execute o comando: rc.exe C: \ SomeFolder \ result \ eventMessage.rc

Nota : o rc.exe está localizado no mesmo diretório que o mc.exe.

Após a compilação, o arquivo eventMessage.res será criado, o que é necessário para criar uma biblioteca dinâmica.

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

Nota: link.exe está localizado, em um caso especial, em C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\VC\bin

7. Parabéns, criamos a tão esperada biblioteca com você, mas isso não é tudo. Entramos em regedit no nosso diretório a partir da etapa 1. No campo diretório, crie um parâmetro de string (valor da string), nomeando essa criação em EventMessageFile e, no valor, indique o caminho da nossa biblioteca: C: \ SomeFolder \ result \ OurMessageSet.dll. É assim:



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

Que a força esteja com você.

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


All Articles