Проверка разрешений на запись журнала событий без записи записи

Мне нужно проверить, есть ли у пользователя права на запись в журнал событий. Мое решение прямо сейчас состоит в том, чтобы написать тестовое сообщение в журнале и удалить его впоследствии (чтобы журнал не испортился, так как проверка разрешений вызывается часто (каждые 3-5 минут) какой-то «Healthcheck» - оказание услуг:

const string log = "MyApplicationLog";
const string source = "PermissionCheck";
EventLog evLog;

try
{
    if (!EventLog.SourceExists(source))
    {
        EventLog.CreateEventSource(source, log);
    }
    evLog = new EventLog();
    evLog.Source = source;
    evLog.WriteEntry("PermissionCheck Test Message");
    return true;
}
finally
{
    //remove the check messages:
    if (EventLog.Exists(log))
    {
        EventLog.Delete(log);
    }
}

Есть ли возможность проверить разрешения, не записывая запись в журнал?

Заранее спасибо,

ЭльКунзо


person ElKunzo    schedule 21.02.2011    source источник


Ответы (1)


Да, насколько я знаю, с помощью CAS. Украсьте необходимых участников атрибутом EventLogPermission, оттуда вы можете контролировать, должны ли вы иметь доступ, только желаемый и так далее.

Однако это вполне может повлечь за собой небольшое дальнейшее приключение в самой CAS, если вы незнакомы.

Ссылка MSDN.

person Grant Thomas    schedule 21.02.2011
comment
Спасибо за ваш ответ - но я совершенно неправильно понял задачу (я не читал комментарии к задаче): мне просто нужно было добавить права записи EventLog для личности/пользователя, который запускает службу, без изменения кода ;-). Все равно спасибо! P.S.: Я использовал следующее «как сделать»: ссылка - person ElKunzo; 23.02.2011
comment
Без проблем; в таком случае может быть целесообразно опубликовать свой собственный ответ, чтобы люди знали о каждом подходе, а данные были логически доступны для сообщества. Рад, что ты снова в деле, хорошая работа. - person Grant Thomas; 23.02.2011