删除服务

时间:2011-08-23 22:47:40

标签: c# windows

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

首次安装时我设法安装了该服务,但是当我尝试运行我得到的服务时 错误:Windows安装程序服务无法启动错误193:0xc2

我尝试过无数种方式删除此服务,但在安装时我仍然收到错误消息1001指定的服务已经存在。

我直接从注册表中删除了该服务,但这似乎没有用。

我试过了 sc delete [service] - >指定的服务不作为已安装的服务存在。

服务未显示在注册表中,也不存在于已安装的服务中。

任何其他想法或选项将不胜感激

5 个答案:

答案 0 :(得分:2)

我在每次重新安装时运行的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"从注册表中删除服务子项。如果服务正在运行或者另一个进程具有服务的打开句柄,则该服务将被标记为删除。

修改

  

我试过sc delete [service]指定的服务不存在   作为已安装的服务。

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

答案 1 :(得分:2)

sc.exe stop serviceName
sc.exe delete serviceName

并重新启动VM \ PC

答案 2 :(得分:0)

尝试使用Powershell和Wmi:

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

确保关闭services.msc窗口。有时会弄乱服务删除。我不确定这是否会有所帮助,你不应该触及注册表!

答案 3 :(得分:0)

也许您尝试在服务运行时删除该服务?在这种情况下,您可能需要重新启动才能清理。

答案 4 :(得分:0)

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

今年早些时候我遇到了同样的问题,我从一个MSI文件中安装了一个服务,该文件在某个地方犯了错误。我卸载了软件包并尝试通过安装程序重新安装并获得与您相同的消息,该服务已经存在。令人沮丧。它根本没有显示为已安装的软件包,也没有显示在服务列表中。

最终,MSI文件在卸载过程中没有正确清理,但我可以手动操作此数据库并使用MSIZap.exe自行删除信息。您需要Windows SDK才能参加此计划。可能还有其他方法,但我不知道它们。

您需要安装包的包guid才能使用MSIZap将其删除。在与MsiZap.exe相同的目录中,您将找到另一个应用程序MsiDb.exe。运行它,将它指向您的MSI文件,将其指向一些空目录以存储一些导出选择“属性”表,选择“导出”单选按钮并单击“确定”按钮。在任何文本编辑器中打开由MsiDb.exe生成的“Property.idk”文件。在文本中查找显示“ProductCode”的行。下面的GUID是您将提供给MsiZap,括号和所有内容的内容。现在你将简单地(bwahaha ......是的)输入:

msizap T {product code}

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

我意识到所有这一切都是一个荒谬的痛苦。我不明白为什么找到产品代码就是这样的试验。但是,我想如果卸载程序工作,你现在就不必为此工作了。确实可能有一种更简单的方法来完成所有这些,但我还没有找到。一旦我找到了有效的东西,我就完蛋了。

最后请注意,导致此错误的原因是在卸载期间将服务列表保持打开状态。一个没有引起注意的卸载程序可能会忽略一些异常并留下自己的谎言。我很幸运,表现不佳的卸载程序是我自己的。顺便说一句,要了解卸载时遗留多少垃圾,请查看this article

我不确定我是否遇到了同样的问题,但如果有的话,我希望这会有所帮助。如果您需要澄清,请询问,我会更新答案。如果我在树上,这与你的问题无关,我道歉。