Page 1 sur 1

[R] Ecrire un évenement Windows

Posté : mar. 06 juil. 2010 09:54
par keltharak
Bonjour, j'ai des problèmes pour ajouter une entrée aux évenements Windows depuis mon script.

Pour l'instant j'ai ceci :
► Afficher le texte
Qui inscrit bien un évenement dans le journal Application, jusque la c'est exactement ce que je veux, mais, dans la description du log, je trouve :

Code : Tout sélectionner

La description pour l'ID d'événement ( 0 ) dans la source (UninstallMsi) est introuvable. L'ordinateur local n'a peut-être pas les informations de Registre ou les librairies requises pour afficher les messages émanant d'un ordinateur distant. Vous pourrez peut-être utiliser l'option /AUXSOURCE= pour récupérer cette description. Reportez-vous aux rubriques Aide et support pour plus de détails. Les informations suivantes font partie de l'événement :
avant ma description. C'est pas terrible...

Est-il possible de faire disparaitre ce message dans la description de mon log ?

Apres quelques recherche sur le net, J'ai trouvé des infos sur l'eventLog Windows et la base de registre mais c'est très usine à gaz juste pour écrire 2 ligne dans le fichier log et je suis pas sur de ce qu'il faudrait faire au final.

Merci.

Re: [..] Ecrire un évenement Windows

Posté : mar. 06 juil. 2010 23:30
par Tlem
Après quelques tests, je dirais que c'est probablement un bug dans les fonctions _EventLog_xxx car tout les exemples produisent le même type de commentaire.

Il serait sans doute pas trop mal de demander des explication dans le forum général du site Anglais. ;)

Re: [..] Ecrire un évenement Windows

Posté : mer. 07 juil. 2010 11:56
par keltharak
Bonjour et merci pour le conseil.

J'ai effectivement trouvé une réponse à ma question sur le forum anglais (ici)

L'auteur à en fait créé un fichier dll générique qui peu être enployer avec n'importe quel programme pour inscrire des évenements windows "propres". Il fourni également un UDF pour l'utilisé.

Ca marche relativement bien, même avec la petite erreur contenue dans sa fonction d'enregistrement de la source (je suis en cours d'inscription sur le forum pour lui faire part de ma découverte).

Pour corriger l'erreur vous même la fonction _SetLog de _CustomEventLog.au3

Code : Tout sélectionner

Func _SetLog($vName,$dll)
    Local $vAppKey
    $dll = _PathFull($dll)
    If NOT FileExists($dll) then Return SetError(1,0,-1)
    $vAppKey = Regread("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\" &  $vName , "EventMessageFile")
    If $vAppKey <> $dll then 
        RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\" & $vName, "EventMessageFile", "REG_EXPAND_SZ",$dll)
        RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\" & $vName, "TypeSupported", "REG_DWORD",31)
        Return $vName
    Else
        Return $vName
    EndIf
EndFunc
doit être changé en :

Code : Tout sélectionner

Func _SetLog($vName,$dll)
    Local $vAppKey
    $dll = _PathFull($dll)
    If NOT FileExists($dll) then Return SetError(1,0,-1)
    $vAppKey = Regread("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\" &  $vName , "EventMessageFile")
    If $vAppKey <> $dll then 
        RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\" & $vName, "EventMessageFile", "REG_EXPAND_SZ",$dll)
        RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\" & $vName, [color=#FF0000]"TypesSupported"[/color], "REG_DWORD",31)
        Return $vName
    Else
        Return $vName
    EndIf
EndFunc
Ca n'empeche pas le bon fonctionnement du programme mais toutes les autres clés de registres sont comme ça donc j'imagine qu'il y a une erreur.

Voici mon nouveau code si besoin :
► Afficher le texte