[R] Ecrire un évenement Windows

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

[R] Ecrire un évenement Windows

#1

Message 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.
Modifié en dernier par keltharak le mer. 07 juil. 2010 13:59, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Ecrire un évenement Windows

#2

Message 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. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

Re: [..] Ecrire un évenement Windows

#3

Message 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
Répondre