Только что решил ту же проблему, также после многочисленных удалений / установок / перезагрузок.У меня есть собственная реализация установщика службы (производная от [System.Configuration.Install.Installer] [1]), и я указал EventLog приложения следующим образом:
public ProjectInstaller()
{
InitializeComponent();
EventLogInstaller installer = FindInstaller(this.Installers);
if (installer != null)
{
installer.Log = "MyService";
}
}
Возможно, реализована та же функцияследующим образом ([MSDN: EventLog.CreateEventSource Method] [2]):
if(!EventLog.SourceExists("MySource"))
{
EventLog.CreateEventSource("MySource", "MyNewLog");
}
В моем случае во время некоторых установок EventLog
был успешно создан, но во время удаления что-то пошло не так, иEventLog не был удален (хотя он не отображался в EventViewer
, он все еще присутствовал в реестре).Таким образом, ошибка «MyService уже существует на локальном компьютере», очевидно, была ошибкой для EventLog, а не для самой службы.
Вы можете попробовать сделать следующее:
Перейдите в меню «Пуск» ивведите regedit
.Откроется редактор реестра.Будьте осторожны с этим, всегда рекомендуется сделать резервную копию всего реестра, прежде чем что-либо делать (Файл -> Экспорт), или только ключи, которые вы собираетесь редактировать / удалить.Откройте Edit -> Find, введите CIMediator и оставьте только ключи отмеченными.Имя вашей службы должно появляться в качестве ключа несколько раз в следующих местах:
HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ services \ eventlog \ CIMediator,
HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ services \ CIMediator,
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ CIMediator,
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ CIMediator
Попробуйте удалить эти ключи.У меня это сработало.
1 2