Domanda

Esiste una gamma specifica di ID eventi in Windows riservato per gli sviluppatori di applicazioni?

Sto lavorando su un'applicazione .NET che scriverà errori al registro degli eventi Windows. Questa applicazione in realtà si rivolge ai server e verrà eseguita come compito programmato dagli amministratori di Sys paranoici che vorranno bloccarlo il più possibile (incluso l'esecuzione con un account di manutenzione del privilegio ridotto). L'app non verrà installata formalmente - in effetti, non sto nemmeno costruendo un installatore per questo; Solo un file zip con il file .exe e app.config.

Ecco il trucco: in Windows, hai bisogno di privilegi di amministratore per creare una fonte nel registro eventi dell'applicazione. Dal momento che non riesco a contare su questo e non voglio fare in modo che gli amministratori sys overwork debbano crearne uno, sto usando "errore dell'applicazione" (usato da MS Office) come fallback. (Scegliere un migliore fallback è nella mia lista di Todo, poiché Office non è così spesso installato sui server).

Il problema è che voglio ancora che i miei eventi si distinguano un po ', piuttosto che mascherarsi da ufficio. In questo modo, i miei amministratori sys possono facilmente filtrare solo quegli eventi in Event Viewer o nell'aggregatore di registro di loro scelta. La migliore soluzione di cui sono a conoscenza in questo momento è usare l'ID evento, ma sono preoccupato di contrastare gli eventi di Windows interni, soprattutto considerando il mio pubblico di destinazione.

Ho guardato, ma non riesco a trovare alcuna documentazione su questo. Quindi, c'è una gamma specifica di ID eventi che dovrei usare, starò bene usando qualunque cosa o dovrei guardare un'opzione completamente diversa qui?

È stato utile?

Soluzione

Non proprio. Al livello superiore hai una fonte di eventi. Ogni fonte di eventi ha le sue categorie di eventi. Ogni messaggio di evento è "di proprietà" da una fonte di eventi e rientra in una delle sue categorie di eventi. Se hai intenzione di registrare i tuoi eventi sotto la fonte di eventi di qualcun altro, stai rompendo questa convention e potresti avere delle collisioni di ID eventi.

D'altro canto, ID eventi sono strutturalmente simili a hresults e c'è un bit del cliente che potresti impostare. Esiste anche un campo di codice delle strutture, ma Microsoft fornisce solo una funzione per la terza parte (il resto è riservato). Anche se scherzi con questi bit, sei ancora in balia del proprietario della fonte dell'evento; Se Microsoft dovesse mai scrivere qualcosa alla fonte dell'evento che stai utilizzando e impostare il BIT o il codice della struttura del cliente (ad es. Forse componenti non Windows come Office o qualcosa del genere), saresti tornato nello stesso pericolo di collisioni. O se qualche altro sviluppatore decide di fare la stessa cosa che stai facendo. Il modo più sicuro è definire la tua fonte di eventi.

Altri suggerimenti

Sembra che questo sia il punto cruciale del problema

Sono preoccupato di contrastare con gli eventi di Windows interni, soprattutto considerando il mio pubblico di destinazione.

Non credo che tu debba preoccuparti perché l'ID evento corrisponde a una fonte di evento specifica, quindi a meno che tu non usi la stessa identica fonte che non farà arrabbiare l'amministratore. Ad esempio, MS a volte lo fa usa lo stesso ID con fonti diverse.

Se si desidera ottenere informazioni sugli editori registrati e gli ID eventi che puoi utilizzare Wevtutil Ad esempio, questo elencherà gli editori.

wevtutil ep

Da ciò è possibile ottenere gli ID eventi specifici utilizzati per un editore che puoi utilizzare quanto segue (in questo esempio è stato utilizzato il registro degli eventi)

wevtutil gp Microsoft-Windows-EventLog /ge /gm:true

Se sei bravo a PowerShell, sono sicuro che potresti trovare uno script per ottenere tutti gli ID eventi che sono registrati

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top