E ‘ necessario creare manualmente un registro eventi di Windows origine durante l’installazione di un servizio di Windows

Ho sviluppato un servizio di Windows in C#. Ho creato un programma di installazione con Visual Studio 2008, che installa il servizio di Windows. Tutto è bene finora. Voglio fare in modo che l’origine dell’evento è stato creato al momento dell’installazione, in modo che qualsiasi errore/condizioni di eccezione a runtime sono correttamente registrati nel registro eventi di Windows.

L’evento di origine di ottenere automaticamente creato (e rimosso) come parte di windows il servizio di installazione (e disinstallazione), o devo gestire io stesso, e creare un’azione personalizzata per creare e cancellare come segue?

protected override void OnBeforeInstall(IDictionary savedState)
{
    base.OnBeforeInstall(savedState);

    if (!EventLog.SourceExists(ServiceName))
        EventLog.CreateEventSource(ServiceName, "Application");
}

protected override void OnAfterUninstall(IDictionary savedState)
{
    base.OnAfterInstall(savedState);

    if (EventLog.SourceExists(ServiceName))
        EventLog.DeleteEventSource(ServiceName);
}
InformationsquelleAutor Elan | 2009-09-27

 

2 Replies
  1. 13

    Sembra a me come il ServiceInstaller crea automaticamente un DataSource durante l’installazione con lo stesso nome del servizio, quindi non c’è bisogno di alcun codice aggiuntivo.

    Dal ServiceInstaller documentazione

    Quando l’installazione viene eseguita, viene creato automaticamente un EventLogInstaller per installare il registro eventi di origine associata con ServiceBase classe derivata. Il Log di proprietà per questa sorgente è impostata dal ServiceInstaller costruttore del computer registro Applicazione. Quando si imposta il Nome del ServiceInstaller (che dovrebbe essere identico al ServiceBase..::.Nome del servizio), la Fonte è automaticamente impostato sullo stesso valore. In un errore di installazione, la sorgente di installazione è rotolato lungo con installato precedentemente servizi.

  2. 8

    Si dovrebbe registrare durante l’installazione, l’account di servizio potrebbe non avere il privilegio di farlo durante la fase di esecuzione: Procedura: Aggiungere l’Applicazione come una Fonte di Voci del Registro Eventi:

    Per impostazione predefinita, se si tenta di scrivere un
    voce senza prima aver registrato
    il componente come una valida fonte, la
    il sistema registra automaticamente l’
    di origine con il registro eventi, utilizzando il
    valore della proprietà di Origine, come il
    stringa di origine. In generale, di creare il
    nuova sorgente di eventi durante l’
    installazione dell’applicazione. Questo
    permette di tempo per il sistema operativo
    per aggiornare la lista degli iscritti
    evento fonti e la loro configurazione.
    Se il sistema operativo non ha
    aggiornato la sua lista di sorgenti di eventi
    e si tenta di scrivere un evento con
    la nuova fonte, l’operazione di scrittura
    avrà esito negativo. Se la creazione di fonte
    durante l’installazione non è un’opzione,
    quindi provare a creare l’origine ben
    in vista della prima operazione di scrittura,
    forse durante la vostra applicazione
    inizializzazione. Se si sceglie questo
    approccio, essere sicuri di inizializzazione
    il codice è in esecuzione con privilegi di amministratore
    diritti sul computer. Questi diritti
    sono necessari per la creazione di nuovi eventi
    fonti

    Per fortuna il ServiceInstaller rende veramente facile, come si è già scoperto.

Lascia un commento