【问题标题】:Windows service won't install: The specified service already existsWindows 服务不会安装:指定的服务已经存在
【发布时间】:2012-03-05 19:06:04
【问题描述】:

我正在用 C# 编写一个小服务,我已经安装并卸载了几次,突然之间它不会再次安装。我尝试卸载它,它说没有要卸载的东西,但是当我再次安装它时,我收到以下消息:

错误 1001:指定的服务已经存在

现在,我尝试了以下解决方案:

  • 关闭服务管理器(因为打开的服务管理器可能持有 处理它)

  • 尝试使用 SC QUERY 找到它,删除是使用 SC DELETE (根据 Service already exists (when it clearly doesn't))

  • 试图在 regedit 中删除它(那里不存在)

  • 我已将项目输出正确添加到自定义操作(安装、 提交、回滚、卸载)

  • 重新启动计算机 (!)

我的想法已经不多了。绝对没有证据表明该服务已安装在我的计算机上,即使成千上万的开发人员似乎都遇到过这个问题(我以前什至自己也遇到过),但我从未听说过没有标准解决方案的情况确实有效。

我可能错过了什么?

编辑

我已经进入 regedit 并再次尝试查找我的服务,但这次我导出了 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 部分并进行了搜索。我可以在以下转储中找到我的服务:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService

但后来我在 regedit 视图中转到那里,它不在那里。有什么建议?我是怎么搞砸的:?

重新编辑

忽略编辑,该服务仅在 regedit 中显示,而安装我显示错误消息,但这是更奇怪的事件,该服务已安装,然后中断并回滚...

【问题讨论】:

  • 我在 XP 上遇到过几次这种情况,但到目前为止,Win7 解决了这个问题。在这些情况下,它要么是 EventLog-Viewer,要么是服务管理器。并且重新启动总是解决了这个问题。我只能说,使用旧的 .exe 卸载可能很重要,但除了尝试使用 reg-cleaner 工具之外,我不知道任何可能的解决方案。
  • 嗯,我使用的是 Vista(自 win95 以来最好的操作系统!),我不知道为什么重启不能解决它,因为它不在注册表中......
  • @CarstenKönig - 我刚刚导出了我的整个注册表并尝试在其中找到“MyService”,但什么也没找到,所以它不在注册表中......
  • 可能不是名称,而是其他一些条目(guid,无论如何)-我看到的唯一其他“解决方案”是重新安装 Windows-不要认为这比尝试 regcleaner 更好

标签: c# service


【解决方案1】:

作为临时解决方案,您可以稍微更改服务名称(例如,从 service_name 中添加或删除一两个字符)但保持 display_name 相同.

【讨论】:

  • 如果可以的话,我会对此投反对票。该解决方案会阻塞您的系统。我不想通过更改名称来克隆我的服务。
  • 这就是为什么它说“临时解决方案”,我的朋友。我很高兴你不能投反对票。
  • 嘿,我现在可以,但我不会。你是对的,这将是一个有效的临时解决方案,当然之后要由你自己来收拾烂摊子:)
【解决方案2】:

我建议查看 Sysinternals Process Monitor 活动并向后尝试查找在报告错误之前发生的情况。例如,您可能会看到某个 reg 密钥被访问。

【讨论】:

  • 我确实使用了在technet.microsoft.com/en-us/sysinternals/bb896645 找到的进程监视器,它非常有用,我可以按照安装过程查看它确实安装了我的服务,但它没有显示在regedit(请参阅我更新的问题)...
【解决方案3】:

我遇到了类似的问题(服务处于停止状态,然后被过度整理的磁盘空间删除)为了解决这个问题,我将新服务复制到“可执行文件路径”框中标记的相同位置,然后启动服务。

目前没有问题。

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 2016-11-08
    • 1970-01-01
    • 2017-10-09
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多