删除服务

本文关键字:服务 删除 | 更新日期: 2023-09-27 18:06:33

我为一个服务创建了一个安装程序和自定义操作。

在第一次安装时,我设法安装了服务,但当我试图运行服务时,我得到了

Windows安装程序服务无法启动

我已经尝试了无数种方法删除这个服务,但在安装时我仍然得到一个错误消息1001指定的服务已经存在

我直接从注册表中删除了服务,但这似乎不起作用。

我试过了sc delete [service] -->指定的服务不存在

服务没有出现在注册表中,也没有出现在已安装的服务中。

如果有其他的想法或选择,我将不胜感激

删除服务

我在每次重新安装时运行的bat文件中使用了这个命令。

set path=%path%;%SystemRoot%'Microsoft.NET'Framework'vXXX
InstallUtil /u YourService.exe
InstallUtil /i YourService.exe
net start "Service name"

如果你想删除/卸载/删除一个Windows服务,可能是一个不完整的安装程序,你可以在管理员控制提示符中使用sc命令:

sc delete [servicename]

"sc delete"从注册表中删除服务子项。如果该服务正在运行,或者另一个进程对该服务有一个打开的句柄,则该服务将被标记为删除。

编辑

I have try sc delete [service]指定的服务不存在作为已安装的服务。

可能重启机器会解决这个问题。

sc.exe stop serviceName
sc.exe delete serviceName

和重启你的VM'PC

这个投诉可能来自安装程序,而不是来自Windows。

我今年早些时候遇到了同样的问题,我从一个MSI文件安装了一个服务,它在线路的某个地方出错了。我卸载了这个包,并尝试通过安装程序重新安装,得到了和你一样的消息,服务已经存在。令人沮丧。它不再显示为已安装包,也不再显示在服务列表中。

结果是MSI文件在卸载过程中没有正确地清理自己,但是我可以手动操作这个数据库并使用MSIZap.exe自己删除信息。您需要Windows SDK才能访问此程序。可能还有其他方法,但我不知道。

您将需要安装包的包指南来使用MSIZap删除它。在与MsiZap.exe相同的目录中,您将发现另一个应用程序MsiDb.exe。运行它,指向你的MSI文件,指向一些空目录来存储一些导出,选择"属性"表,选择"导出"单选按钮,然后点击"确定"按钮。打开"属性"。在任何文本编辑器中由MsiDb.exe生成的idk"文件。在你的文本中寻找写着"ProductCode"的一行。接下来的GUID是您将提供给MsiZap、括号等的内容。现在你只需(哇哈哈)…输入:

msizap T {product code}

其中"{product code}"被您找到的GUID替换。这将从windows中的MSI数据库中删除您的产品的所有痕迹,这应该会关闭安装程序。

我意识到这一切都是可笑的痛苦的屁股。我不明白为什么找到一个产品代码是如此的困难。但是,我想如果卸载程序工作,您现在就不必为它做它的工作了。真的可能有更简单的方法来做这一切,但我还没有找到。一旦我发现一些有用的东西,我就会克服它。

最后要说明的是,导致这个错误的原因是在卸载过程中让服务列表打开。卸载程序不注意可能会忽略一些异常,并留下自己的碎片。我很幸运,行为不佳的卸载程序是我自己的。顺便说一下,要了解卸载后遗留了多少垃圾,请查看这篇文章。

我不确定我是否和你有同样的问题,但如果是,我希望这能帮助到你。如果你需要澄清,问我,我会更新答案。

尝试使用Powershell和Wmi:

(gwmi win32_service -filter "name='yourservicename'").delete()

确保服务。关闭MSC窗口。有时这会使服务删除变得混乱。我不确定这是否会有帮助,你不应该触摸注册表!

也许您试图在服务运行时删除它?在这种情况下,您可能需要重新启动以清除这些内容。