MC.exe (compilateur de messages), rc.exe, link.exe pour générer .dll pour EventMessageFile

Bonjour, chers lecteurs de Habr. Ce message est un guide pour créer une bibliothèque .dll dynamique qui contient les messages nécessaires à l'affichage dans un enregistreur personnalisé situé dans l'Observateur d'événements Windows \ Journaux des applications et des services \ uuuu (à titre d'exemple).



Dans le journal personnalisé, vous pouvez souvent voir des messages dont la description contient:



Cela signifie que la source d'événement yyyy ne contient pas l'ensemble nécessaire d'ID et de description.

Pour corriger cette situation, il faut:

1. Ouvrez regedit dans le chemin suivant: HKLM \ SYSTEM \ CurrentControlSet \ Services \ EventLog et assurez-vous que votre partition existe.

2. Créez eventMessage.txt dans lequel vous devez placer vos paramètres, par exemple avec msdn , enregistrez dans l'encodage nécessaire Windows-1251 ou Unicode et le format eventMessage.mc.

Remarque: lorsque vous remplissez eventMessage avec votre ID et votre description, TOUJOURS après la description, placez un point sur une nouvelle ligne, puis placez le chariot sur une nouvelle ligne.

Un exemple:

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

Si vous ne tenez pas compte de cette fonctionnalité, il peut y avoir des erreurs imprévues lors de la compilation.

3. Exécutez cmd en tant qu'administrateur.

4. Exécutez la commande: mc.exe -u C: \ SomeFolder \ eventMessage.mc -r C: \ SomeFolder \ result

Remarque : mc.exe, dans le cas particulier, se trouve dans C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86 au lieu du format -u (Unicode) , vous pouvez utiliser -A (W-1251 ANSI, ) , et l'option -r est l'emplacement de sortie où les fichiers seront enregistrés après la compilation.

Après avoir exécuté la commande, les éléments suivants seront créés: le fichier binaire et le fichier eventMessage.rc dans C: \ SomeFolder \ result

5. Exécutez la commande: rc.exe C: \ SomeFolder \ result \ eventMessage.rc

Remarque : rc.exe se trouve dans le même répertoire que mc.exe.

Après la compilation, le fichier eventMessage.res sera créé, ce qui est nécessaire pour créer une bibliothèque dynamique.

6. Exécutez la commande: link.exe -dll -noentry /out:C:\SomeFolder\result\OurMessageSet.dll C: \ SomeFolder \ result \ eventMessage.res.

Remarque: link.exe se trouve, dans un cas particulier, dans C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\VC\bin

7. Félicitations, nous avons créé la bibliothèque tant attendue avec vous, mais ce n'est pas tout. Nous allons dans regedit vers notre répertoire à partir de l'étape 1. Dans le champ du répertoire, créez un paramètre de chaîne (valeur de chaîne), en nommant cette création dans EventMessageFile, et dans la valeur, indiquez le chemin d'accès à notre bibliothèque: C: \ SomeFolder \ result \ OurMessageSet.dll. Cela ressemble à ceci:



Outils examinés: mc.exe, rc.exe, link.exe.

Que la force soit avec toi.

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


All Articles