安装Windows服务失败:服务已存在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装Windows服务失败:服务已存在相关的知识,希望对你有一定的参考价值。

我正在尝试重新安装我用C#编写的服务。这是第一次有效。我使用installutil来处理安装,服务列表中出现了服务,我可以启动它。然后我对代码进行了一些更新并卸载了服务。在弄清楚我必须关闭服务窗口后,服务似乎已经消失(即成功卸载)。但是,在尝试再次安装服务时,我收到消息说:

System.ComponentModel.Win32Exception: The specified service already exists

这看起来很奇怪,因为我在服务窗口中看不到它。我终于认为在删除有关我的服务的注册表项后发现了问题,但不幸的是,这并没有解决任何问题。

此外,再次卸载对解决问题没有太大作用,因为这会导致矛盾的消息:

System.ComponentModel.Win32Exception: The specified service does not exist as an installed service

我应该相信什么?该服务是否存在?我觉得自己像一个物理学家试图弄清楚猫是死了还是活着。我希望这里有人能够帮助解决这个问题。

答案

一个相关的SO答案最终指出了我正确的方向(为什么我没有在谷歌或SO自己的搜索中发现我不知道)。无论如何,显然Visual Studio生成的Designer.c也创建了一个进程和服务安装程序。当然,这些服务的安装名称与我手动创建的安装程序相同。删除我自己的安装程序解决了这个问题。

另一答案

实际问题是您在代码中多次添加了serviceProcessInstaller和serviceInstaller的对象。它应该只添加一次..

打开projectinstaller的designer.cs文件,你会看到它已经添加到那里了...

另一答案

我也得到了同样的错误,所以要解决,我做的是:

  • 从解决方案资源管理器中打开ProjectInstaller.cs
  • 如果有代码视图,请通过右键单击进入查看设计器模式

您将看到除默认值2之外的新安装程序,即serviceprocessInstaller1和ServiceInstaller1。

只需删除自动生成的安装程序即可。现在构建和安装,它将工作。

另一答案

检查Service Installer中的服务名称属性。

另一答案

我尝试过上面提到的所有解决方案。但我的服务在注册表中安装了一些不同的名称。所以只是尝试删除该注册表。

在注册表中打开以下链接

Hkey_Local_Macine>System>CurrentControlSet>Service>

但我没有在这条道路上找到我的服务。所以我试着在注册表中找到它。只需按ctrl + F并输入您的服务名称即可。或者猜一些名字。您将获得确切的位置。

只需删除它。它会工作。

另一答案

需要删除“Me.Installers.AddRange(New System.Configuration.Install.Installer(){Me.ServiceInstaller1,Me.ServiceProcessInstaller1})”行,如果设计器中已有相同的行,则它将被安装。

ServiceProcessInstaller1是我项目中的名称。

以上是关于安装Windows服务失败:服务已存在的主要内容,如果未能解决你的问题,请参考以下文章

Installutil 不会卸载:“指定的服务不作为已安装的服务存在”

安装软件的时候出现“Error 1001:指定的服务已存在“,怎么解决

sql server 2000安装程序配置服务器失败

windows安装mariaDB失败,服务不能启动

如何更新已安装的 Windows 服务?

windows server backup备份失败。求解决方法