C# 安装windows服务失败:服务已存在

C# 安装windows服务失败:服务已存在,c#,windows-services,installutil,C#,Windows Services,Installutil,我正在尝试重新安装我用C#编写的服务。 这是第一次奏效。我使用installutil处理安装,服务显示在服务列表中,我可以启动它。 然后我对代码进行了一些更新并卸载了服务。在确定我必须关闭“服务”窗口后,该服务似乎已消失(即成功卸载)。 然而,在再次尝试安装该服务时,我收到消息说: System.ComponentModel.Win32Exception: The specified service already exists 这似乎很奇怪,因为我无法在服务窗口中看到它。我最终认为我在删除了

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

System.ComponentModel.Win32Exception: The specified service already exists
这似乎很奇怪,因为我无法在服务窗口中看到它。我最终认为我在删除了与我的服务有关的注册表项后发现了问题,但不幸的是,这并没有解决任何问题

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

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

我应该相信什么?服务是否存在?我觉得自己就像一个物理学家,试图弄清楚猫是死是活。我希望这里有人知道一些东西来帮助解决这个问题。

一个相关的SO答案最终为我指明了正确的方向(为什么我没有在Google或SO自己的搜索中找到这个我不知道)。 无论如何,显然VisualStudio生成的Designer.cs也创建了一个进程和服务安装程序。当然,它会安装与我手动创建的安装程序同名的服务。
删除我自己的安装程序解决了这个问题。

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


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

我也遇到了相同的错误,因此要解决这个问题,我所做的是:

  • 从解决方案资源管理器中打开ProjectInstaller.cs
  • 如果存在代码视图,则通过右键单击进入视图设计器模式
除了默认设置2,您将看到一个新的安装程序,即serviceprocessInstaller1和ServiceInstaller1


只需删除自动生成的安装程序。现在构建并安装,它就可以工作了。

检查Service Installer中的Service Name属性。

我已经尝试了上面提到的所有解决方案。但我的服务在注册表中是以不同的名称安装的。所以试着删除那个注册表

在注册表中打开下面的链接

Hkey_Local_Macine>System>CurrentControlSet>Service>
但我没有在这条路下找到我的服务。所以我试着在注册表中找到它。只需按ctrl+F并给出服务的名称。或者猜一下你的名字。你会得到确切的位置

删除它就行了。它可以工作。

需要删除“Me.Installers.AddRange(新系统配置.Install.Installer(){Me.ServiceInstaller1,Me.ServiceProcessInstaller1})”行。如果设计器中已经有相同的行,那么它将被安装


ServiceProcessInstaller1是我项目中的名称。

如果正确回答了您的问题(即解决了您的问题),请接受您自己的答案。Bernard,我会这样做,但我要到两天后才能完成。这是一个完美的解决方案:这是正确的,除非您需要打开ProjectInstaller文件,您可以在设计模式下轻松检查和编辑该文件。项目安装程序是使用“服务设计”视图中的AddInstaller选项创建的。