安装Windows服务的问题

时间:2011-01-28 01:51:22

标签: windows-services installutil

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

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

2 个答案:

答案 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   2

答案 1 :(得分:0)

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

HKLM \ System \ CurrentControlSet \ Services \ CIMediator(可能,除非键定义不同)

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