Наиболее вероятная причина этого заключается в том, что у пользователя службы недостаточно прав для создания источников событий.
Вам нужно будет добавить обработчики try / catch в конструктор, чтобы определить, так ли это.
Вы также можете попробовать запустить службу от имени локального администратора, что должно привести к созданию источника события.
По этой причине мы всегда создаем наши источники событий во время установки и требуем, чтобы пользователь установки запустил установку.
Другой вариант, который мы используем, - это постепенное снижение уровня использования журнала событий приложения в случае, если мы столкнулись с исключением безопасности, создающим наш источник события:
try {
if (!System.Diagnostics.EventLog.SourceExists(sourceName))
System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
} catch (SecurityException e) {
sourceName = "Application";
}
eventLog.Source = sourceName;