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ê.