我在安装Windows服务时遇到问题。我安装和卸载了多次服务(installutil ..... installutil / u)没有任何问题,但出现了问题,现在当我尝试安装时,我收到下面列出的错误消息。我检查了计算机管理控制台,服务CIMediator没有出现在服务列表中。如何删除该服务?
System.ArgumentException:源CIMediator已存在于本地计算机上。
答案 0 :(得分:15)
在大量卸载/安装/重启后,解决了同样的问题。 我有自己的服务安装程序实现(派生自[System.Configuration.Install.Installer] [1]),我已将应用程序EventLog指定如下:
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
成功创建,但在卸载期间出现问题,并且未删除EventLog(虽然它没有显示在EventViewer
中,但它仍然存在在注册表中)。
所以错误“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 \ SYSTEM \ CurrentControlSet \ services \ CIMediator
尝试删除这些密钥。它对我有用。
答案 1 :(得分:0)
检查注册表中的密钥是否仍然存在。
HKLM \ System \ CurrentControlSet \ Services \ CIMediator(可能,除非键定义不同)
如果是,请将密钥导出到.reg文件,然后将其删除。