Идентификаторы Событий Windows
существует ли определенный диапазон идентификаторов событий в Windows, зарезервированных для разработчиков приложений?
Я работаю над приложением .Net, которое будет записывать ошибки в журнал событий windows. Это приложение фактически нацелено на серверы и будет запускаться как запланированная задача параноидальными администраторами sys, которые захотят заблокировать его как можно больше (включая запуск с уменьшенной учетной записью обслуживания привилегий). Приложение не будет официально установлено - на самом деле, я даже не строю установщик для этого; просто zip-файл с .exe и приложение.конфигурационный файл.
вот трюк: в Windows вам нужны права администратора для создания источника в журнале событий приложений. Поскольку я не могу рассчитывать на это, и я не хочу, чтобы перегруженные администраторы sys создавали его, я использую "ошибку приложения" (используется MS Office) в качестве запасного варианта. (Выбор лучшего запасного варианта находится в моем списке задач, так как office не так часто устанавливается на серверах).
проблема что я все еще хочу, чтобы мои события немного выделялись, а не просто маскировались под офис. Таким образом, мои администраторы sys могут легко фильтровать только те события в средстве просмотра событий или агрегаторе журналов по своему выбору. Лучшее решение, которое я знаю сейчас, - это использование идентификатора события, но я беспокоюсь о конфликте с внутренними событиями Windows, особенно учитывая мою целевую аудиторию.
Я посмотрел, но я не могу найти любую документацию на это. Итак, существует ли определенный диапазон событий Идентификаторы, которые я должен использовать, я буду в порядке, используя что угодно, или я должен посмотреть на совершенно другой вариант здесь?
2 ответов
Не совсем так. На верхнем уровне у вас есть источник событий. Каждый источник событий имеет свои категории событий. Каждое сообщение о событии "принадлежит" источнику события и попадает в одну из его категорий событий. Если вы собираетесь регистрировать свои события в чьем-то источнике событий, вы нарушаете это соглашение и вполне можете иметь конфликты идентификаторов событий.
с другой стороны, Событий структурно подобны HRESULTs и бит клиента ты можешь сесть. Существует также поле кода объекта, но Microsoft предоставляет только один объект для третьих лиц (остальные зарезервированы). Даже если вы возитесь с этими битами, вы все еще находитесь во власти владельца источника событий; если Microsoft когда-либо напишет что-то в источник событий, который вы используете, и установит бит клиента или код объекта (например, возможно, компоненты, отличные от Windows, такие как Office или что-то еще), вы снова окажетесь в той же опасности столкновений. Или если какой-то другой разработчик решает сделать то же самое, что и вы. Действительно, самый безопасный способ-определить свой собственный источник событий.
Кажется, в этом суть проблемы
Я беспокоюсь о конфликте с внутренними событиями Windows, особенно учитывая мою целевую аудиторию.
Я не думаю, что вам нужно беспокоиться, потому что идентификатор события соответствует определенному источнику события, поэтому, если вы не используете тот же самый источник, вы не заставите администратора расстроиться. Например MS иногда делает использует тот же ID С разных источников.
Если вы хотите получить информацию о зарегистрированных издателях и идентификаторах событий, которые вы можете использовать Wevtutil например, это будет список издателей.
wevtutil ep
из этого вы можете получить конкретные идентификаторы событий, используемые для издателя, вы можете использовать следующее (журнал событий использовался в этом примере)
wevtutil gp Microsoft-Windows-EventLog /ge /gm:true
Если Вы хороши в powershell, я уверен, что вы могли бы придумать сценарий, чтобы получить все идентификаторы событий, которые зарегистрированы