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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 10 октября 2011

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

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

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

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

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

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

...