在Windows 7中安装/卸载服务:"错误1001。指定的服务已被标记为删除"

26

我目前正在使用.NET 4.0、Visual Studio 2010和Windows 7-32bit开发Windows服务。我有一个安装程序项目,可以为我完成安装。当我安装服务、卸载它并尝试重新安装时,会出现以下错误:

错误1001. 指定的服务已被标记为删除

在Windows XP中,问题是因为打开了Services.msc。关闭这个窗口即可解决这个问题。

然而,在Windows 7中,我唯一能够解决这个问题的方法是重启。我尝试关闭所有程序,但问题仍然存在。

有没有人知道如何在不重启的情况下解决这个问题?

编辑

自从我停止使用MSI安装程序之后,我就没有遇到过这个问题,我改用sc.exe手动安装服务。 我认为这个问题可能与Visual Studio 2010和MSI Installer项目的组合有关。然而,我仍然不知道这个问题的罪魁祸首是什么。 结果发现,Process Explorer是罪魁祸首。


2
使用Taskmgr.exe,进程选项卡,逐个终止进程直到找到仍然打开注册表键的进程。 - Hans Passant
我已经停止使用MSI安装服务,而是改用sc.exe手动安装。从那以后,我就没有遇到过这个问题。看起来这个问题可能与MSI项目和可能的Visual Studio有关。 - Mas
是的,它就是服务管理器(services.msc)搞砸了。 - TheVillageIdiot
5个回答

43

我在Windows 7 Ultimate版上遇到同样的问题。在关闭Services.msc窗口后安装服务解决了我的问题。


25

简短回答

  • 关闭Services.msc
  • 关闭Process Explorer

详细回答

当我再次遇到这个问题时,我去了任务管理器并开始关闭进程。最终我找到了罪魁祸首,它是一个用于管理软件分发的内部公司应用程序。我关闭了它,服务最终消失了。

更新

我还发现有时候需要关闭Process Explorer才能使已删除的服务消失。


1
很好,但这并不意味着在另一台目标机器上它也能运行。我强烈建议您考虑克里斯托弗的建议。 - Yan Sklyarenko
我不再使用MSI安装程序。现在我使用脚本中的sc.exe来安装服务。 - Mas
6
在我的情况中,Process Explorer 是罪魁祸首。 - SWB
2
唉,我也是。为什么,ProcessExplorer,为什么为什么为什么?!?!? - Michael Paulukonis

6

您是否考虑使用其他的MSI制作工具,例如Windows Installer XML?它的优点是不会隐藏Windows Installer的底层ServiceInstall / ServiceControl面板,避免了使用易碎的进程外InstallUtil代码重新发明轮子的痛苦。


谢谢你的好建议。目前,我的需求非常简单,所以我使用VS自带的安装程序项目就可以了。我只是被这个烦人的问题困扰着。目前,我正在通过手动使用InstallUtil.exe进行安装和卸载来解决这个问题。 - Mas
如果你已经受够了 1001 错误消息(即使在静默安装期间),请随时联系我。我有 14 年的安装程序编写经验,可以自信地说 InstallUtil 真的很糟糕。使用 postbuild 脚本来编写 ServiceInstall 和 ServiceControl 表会是一个更好的解决方案。 - Christopher Painter
+1. 我必须说我自己也掉进了这个坑里。当我在我的安装中依赖于InstallUtil时,70%的报告问题都与它的错误有关。而且我只能重现和解决其中的一小部分... - Yan Sklyarenko

1

我刚刚自己解决了这个问题,在Windows 7中。

顺便说一下,原来你可以转到“服务”选项卡,右键单击有问题的服务,选择“转到进程”,然后根据需要终止它。


0

我在我的部署服务器上遇到了相同的Windows服务问题。

解决问题的步骤:

  • 进入Windows的安装/卸载向导
  • 点击修复(这将触发设置的自定义操作)
  • 修复后尝试卸载该Windows服务
  • 它将完美地卸载

希望这对您有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接