Ho una libreria che utilizzo su più applicazioni ClickOnce. In caso di errore in questa libreria, vorrei scrivere l'errore su Windows EventLog
.Utilizzo di EventLog nell'applicazione ClickOnce
Ho trovato un KB article su come ma sembra che questo richiede autorizzazioni di amministratore per cercare il per la fonte. In particolare soffoca quando cerca di cercare il registro eventi Security
.
Esiste comunque una soluzione per aggirare questo problema e scrivere nel registro eventi in un'applicazione ClickOnce? Ho visto una persona trying to write to a known source, ma non sembravano essere in grado di trovare una fonte che fosse sempre disponibile.
EDIT:
Sulla base di risposte qui ho creare un programma che è incluso con la mia applicazione che posso correre alla prima esecuzione per impostare l'origine eventi che può ottenere privilegi di amministratore. Tuttavia, una volta creata la fonte, sembra che non riesca ancora a scriverlo.
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
if (!EventLog.SourceExists("ATE"))
{
EventLog.CreateEventSource("ATE", "Application");
}
}
Crea correttamente una fonte (che è equivalente alla modifica del Registro di sistema fornita da Yannick Blondeau). Quando scrivo all'origine nella mia applicazione non elevata, ricevo un nuovo errore, ma non funziona ancora. Il nuovo errore è:
Cannot open log for source 'ATE'. You may not have write access.
EDIT 2:
Ora ho cercato di farlo funzionare attraverso il Registro di modifica sul CustomSD key. Ho provato ad aggiungere (A ;; 0x7 ;;; AU) per dare agli utenti autenticati pieno accesso ma non sembrava avere alcun effetto.
Penso che la tua terza idea di caricare un app e l'esecuzione di una volta dovrà essere la mia soluzione, come l'intero scopo di ClickOnce che gestisce la distribuzione e l'installazione. Tuttavia, anche se creo la fonte dell'evento in tale applicazione, ricevo un errore quando vado a scrivere su di essa. Dice "Impossibile aprire il registro per l'origine" MySource ". Potresti non avere accesso in scrittura." Sembra che mi sto avvicinando, ma non è proprio lì. – Fr33dan
Hai chiuso l'applicazione prima di provare a scrivere? In quel frammento di codice da MS dichiarano esplicitamente che la sorgente log non dovrebbe essere creata e immediatamente utilizzata in quanto vi è un periodo di latenza necessario per abilitare l'origine. –
Sì, al momento ho eseguito manualmente l'applicazione di configurazione per vedere se avrebbe funzionato, quindi c'erano oltre 20 secondi tra la creazione dell'origine e il tentativo di scrivere su di essa. – Fr33dan