安装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 不会卸载:“指定的服务不作为已安装的服务存在”