2011-01-28 154 views
7

我在安装Windows服务时遇到问题。我安装并卸载了多次服务(installutil ..... installutil/u),没有任何问题,但出现了一些问题,现在当我尝试安装时,出现以下错误消息。我检查了计算机管理控制台,服务CIMediator没有出现在服务列表中。我如何删除服务?安装Windows服务时出现问题

System.ArgumentException:源CIMediator已经存在于本地计算机上。

回答

0

检查注册表中是否存在密钥。

HKLM \系统\ CurrentControlSet \服务\ CIMediator(可能是,除非关键是不同的定义)

如果是,密钥导出到.reg文件,然后将其删除。

14

刚刚解决了同样的问题,也经过多次卸载/安装/重新启动。 我有我自己的实现服务的安装程序,我已经指定的应用程序事件日志(从[System.Configuration.Install.Installer] [1]得到的)的如下:

public ProjectInstaller() 
    { 
     InitializeComponent(); 

     EventLogInstaller installer = FindInstaller(this.Installers); 
     if (installer != null) 
     { 
      installer.Log = "MyService";     
     } 
    }  

您可能具有相同的功能实现的下面的方式([MSDN:EventLog.CreateEventSource方法] [2]):

if(!EventLog.SourceExists("MySource")) 
{ 
    EventLog.CreateEventSource("MySource", "MyNewLog"); 
} 

在我的情况下,在一些EventLog是successfuly创建安装的,但在卸载过程中出现了问题,而事件日志未删除(虽然它没有在EventViewer中显示,但它仍然存在e注册表)。 因此,错误“MyService已经存在于本地计算机上”,显然是EventLog的错误,而不是服务本身。

你可以试着做到以下几点:

转到您的开始菜单和类型regedit。这将打开注册表编辑器。要小心,总是建议在做任何事情(文件 - >导出)之前备份整个注册表,或者只有您要编辑/删除的密钥。 打开编辑 - >查找,键入CIMediator并仅保留Keys检查。您的服务名称应显示为键多次,在以下位置

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \服务\事件日志\ CIMediator,
HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \服务\ CIMediator,
HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\事件日志\ CIMediator,
HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\ CIMediator

尝试删除这些注册表项。它为我工作。

1 2

+0

完美解决方案。我找到了在注册表中生成的密钥。我相信我没有通过Project Bin文件夹安装它。不知道它是如何创建注册表项而不安装的。只是好奇。但是,删除现有的键确实解决了我的问题。谢谢。 – 2016-03-18 16:34:19