UAC дает мне припадки! - PullRequest
       11

UAC дает мне припадки!

1 голос
/ 29 августа 2009

Код, над которым я сейчас работаю, работает на Windows Server 2003, но должен иметь возможность записи в EventLogs на нескольких машинах. Я пишу в C #, используя VS2008 Pro и .NET Framework 3.5.

Сам код относительно прост (благодаря фреймворку):

using (EventLog remoteEvtLog = new EventLog(LogName, HostName, EventSource))
{
    remoteEvtLog.WriteEntry(Body);
}

«LogName» - это строка, содержащая имя журнала для записи - в большинстве случаев «Application». «HostName» - это строка, содержащая NetBIOS-имя компьютера, на котором должна быть записана запись журнала. «EventSource» - это строка, содержащая имя отправителя события (это утилита, используемая несколькими приложениями, поэтому обычно она будет иметь имя приложения-потребителя). «Тело» - это строка, содержащая текст для записи в журнал событий.

В большинстве случаев это работает нормально, но когда машина, на которую выполняется запись, использует UAC, любая запись, которая создает новый EventSource, завершается неудачей. Это происходит, даже если используемые учетные данные безопасности являются членами группы «Администраторы», и мне не удалось найти способ указать уровень привилегий с повышенными правами. Очевидно, члены группы администраторов получают два токена - один ограниченный и один повышенный, но, насколько я могу судить, единственный способ указать повышенный токен - через пользовательский интерфейс, что, очевидно, является проблемой при удаленном доступе к журналам.

Есть идеи?

1 Ответ

0 голосов
/ 29 августа 2009

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

...