Мое приложение находится на C# .NET и развертывается на разных компьютерах. Пользователи моего приложения имеют обычные права доступа (никаких прав ADMIN). На нескольких системах я получаю System.Security.SecurityException. Он говорит: «System.Security.SecurityException: источник не был найден, но некоторые или все журналы событий не могли быть найдены Недоступные журналы: безопасность».System.Security.SecurityException при записи в журнал событий C#
Я сделал несколько обходных путей: -
- на одной машине я запустил приложение с правами администратора, он отлично работал - никаких проблем.
- Я добавил группу пользователей в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Security. Все нормально.
Я не хочу идти на все машины и делать над обходными методами. Мне нужно какое-то общее обходное решение, которое можно применить один раз на всех машинах. Любая помощь?
Записав несколько строк кода: - Config файл: -
<add key="E_Source" Value="ABC">
C# код
Public static readonly string E_Source = ConfigManager.GetString("E_Source");
EventLog.writeEntry(E_Source, logtext, logtype);
Заранее спасибо
Есть действительно только две исправления, которые я нашел, не требуя прав администратора. 1) Добавьте сертификат в свое приложение и сделайте этот сертификат доверенным в своем домене. 2) Сверните свой собственный регистратор и откройте журнал событий Windows. Я предполагаю, что есть вариант. 3) Создайте специальную учетную запись пользователя домена только для ведения журнала и выполните код регистратора под специальным контекстом пользователя. – VoteCoffee
См. Мой ответ на https://stackoverflow.com/questions/8447948/log4net-eventlog-permissions-issue. -using-non-administrator-account/8478672 # 8478672 – sgmoore
Вам нужны только повышенные права на создание источника событий, а не запись на него. Поэтому, если ваше приложение имеет установщик, который все равно должен запускаться как администратор, в это время создайте источник события. – Crowcoder