Windows Server 2008 не позволяет мне создавать источник журнала, говоря, что он уже существует (это не так)

У меня есть небольшое приложение winforms, которое создает новый источник журнала событий.

Я запускаю его как администратор для повышенных привилегий.

Код проверяет, не существует ли указанный журнал событий, а затем создает источник. На моем компьютере с Windows 7 это работало нормально, но когда я запускаю приложение на Windows Server 2008 R2 SP1, оно говорит мне, что источник уже существует. Я знаю, что это не так, потому что а) это свежая установка Windows Server 2008 R2, и б) я добавил код, чтобы вернуть список всех источников журналов, а мой новый не был в списке.

Я знаю, что "первые 8 символов" являются значимыми, и я убедился, что мои исходные имена были полностью уникальными.

Вот супер-простой код (конечно, я пытаюсь / ловит это):

if (!EventLog.SourceExists(sourceName))
{
    EventLog.CreateEventSource(sourceName, logName);
}

Может кто-нибудь сказать мне, почему Windows Server 2008 лжет мне?

1 ответ

Решение

Локальные (или доменные) администраторы - не самые мощные учетные записи в Windows.

Есть другие учетные записи, которые имеют более высокий (хотя и более ограниченный) доступ.

SourceExists() вернет false, если он выйдет, но у вас нет прав доступа, чтобы узнать об этом, и администратору вполне может быть отказано в доступе к чему-либо.

Кроме того, есть зарезервированные названия вещей в нечетных местах, которые могут сбить вас с толку. Создание папок с именами CON COM или LPT, которые вызывали странные проблемы на сервере 2003.

Таким образом, существует также целый ряд причин, по которым CreateEventSource() может завершиться с ошибкой - копаться и во внутренних исключениях, часто они предоставляют критические детали.

Какое имя источника журнала событий вам не удавалось?
Вы бы разместили стек исключений?

Другие вопросы по тегам