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

问题描述 投票:4回答:6

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

System.ComponentModel.Win32Exception: The specified service already exists

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

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

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

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

c# windows-services installutil
6个回答
7
投票

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


5
投票

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

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


2
投票

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

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

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

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


2
投票

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


0
投票

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

在注册表中打开以下链接

Hkey_Local_Macine>System>CurrentControlSet>Service>

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

只需删除它。它会工作。


0
投票

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

ServiceProcessInstaller1是我项目中的名称。

© www.soinside.com 2019 - 2024. All rights reserved.