Вопрос

Есть ли определенный диапазон идентификаторов событий в Windows, зарезервированных для разработчиков приложений?

Я работаю над приложением .NET, которое будет писать ошибки в журнале событий Windows. Это приложение на самом деле предназначено для серверов и будет выполнено как запланированное задание Admins Paranoid Sys, которые захотят как можно больше заблокировать его (включая его запуск с учетной записью по уходу за привилегией). Приложение не будет официально установлено - на самом деле, я даже не строю для этого установщика; Просто zip -файл с файлом .exe и app.config.

Вот трюк: в Windows вам нужны привилегии администратора, чтобы создать источник в журнале событий приложения. Поскольку я не могу рассчитывать на это, и я не хочу, чтобы переутомленные администраторы Sys были необходимы для его создания, я использую «ошибку приложения» (используется MS Office) в качестве запасного. (Выбор лучшего запасного отступления находится в моем списке TODO, поскольку офис не так часто устанавливается на серверах).

Проблема в том, что я все еще хочу, чтобы мои события немного выделялись, а не просто маскировались под офис. Таким образом, мои администраторы Sys могут легко отфильтровать только на эти события в Event Viewer или журнал по своему выбору. Лучшее решение, о котором я знаю сейчас, - это использование идентификатора события, но я беспокоюсь о том, чтобы противоречить внутренним событиям Windows, особенно с учетом моей целевой аудитории.

Я посмотрел, но я не могу найти никакой документации по этому поводу. Итак, есть ли определенный диапазон идентификаторов событий, которые я должен использовать, я буду в порядке, используя все, или я должен посмотреть здесь совершенно другой вариант?

Это было полезно?

Решение

Не совсем. На верхнем уровне у вас есть источник события. У каждого источника событий есть свои категории событий. Каждое сообщение о событии «принадлежит» источником событий и попадает в одну из его категорий событий. Если вы собираетесь записать свои мероприятия под чужим источником событий, вы нарушаете эту конвенцию и, возможно, могут столкнуться с столкновениями с идентификаторами событий.

С другой стороны, Идентификаторы событий структурно похожи на HRESults, и есть кут -клиент, который вы можете установить. Существует также поле кода объекта, но Microsoft предоставляет только один объект для 3 -й стороны (остальные зарезервированы). Даже если вы связываетесь с этими битами, вы все еще находитесь во власти владельца источника события; Если бы Microsoft когда-либо написала что-то источник события, который вы используете, и установить бит клиента или код объекта (например, компоненты, не являющиеся Windows, такие как Office или что-то в этом роде), вы бы сразу же вернулись в ту же опасность столкновений. Или, если какой -то другой разработчик решает сделать то же самое, что и вы. Действительно самый безопасный способ - определить свой собственный источник событий.

Другие советы

Кажется, это суть проблемы

Меня беспокоит противоречие с внутренними событиями Windows, особенно с учетом моей целевой аудитории.

Я не думаю, что вам нужно беспокоиться, потому что идентификаторы события соответствуют конкретному источнику события, поэтому, если вы не используете тот же источник, вы не будете расстраивать администратора. Например, мс иногда делает использует тот же идентификатор с разными источниками.

Если вы хотите получить информацию о зарегистрированных издателях и идентификаторах событий, которые вы можете использовать Wevtutil Например, это перечисляет издателей.

wevtutil ep

Из этого вы можете получить конкретные идентификаторы событий, используемые для издателя, вы можете использовать следующее (журнал событий использовался в этом примере)

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

Если вы хороши в PowerShell, я уверен, что вы можете придумать сценарий, чтобы получить все идентификаторы событий, которые регистрируются

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top