您好我准备了一个Windows服务,它通过批处理文件(.bat文件)在服务器上设置。我也可以在运行Uninstall.bat之后将其从系统中完全删除。在Services上没有myservice.Every东西看起来很好。
单击Setup.exe后,将显示错误消息:错误1001指定的服务已存在:
如何完全从我的操作系统中删除旧的Windows服务。或者如何解决此设置问题。我的uninstall.bat exe运行良好。
答案 0 :(得分:1)
对于serverfault.com来说真的是一个问题,但要完全删除它,请删除HKLM \ System \ CurrentControlSet \ Services下的注册表项。
理想情况下,所有服务操作都应通过调用服务控制管理器(SCM)来完成。这可以通过SC.EXE手动完成。但是,听起来您的应用已尝试过此操作,因此请删除密钥并重新启动Windows。
答案 1 :(得分:1)
根据描述,我的猜测是服务(或者更确切地说是注册表项)确实存在。没有人工干预,你将无法解决这个问题。似乎发生的事情是你确实删除了服务,但似乎没有阻止它(或者它无法停止)。
当服务从SCM数据库中删除后仍然在运行时,服务密钥将被标记为删除内部,并且密钥中将有一个额外的值告诉系统删除开机时的钥匙。这个想法是,如果系统正常关闭,那么要删除的内部链接服务列表将用于删除服务密钥,这将在系统重新启动之前完成。但是,如果系统崩溃,密钥将在启动时和SCM开始提供服务之前被删除。
内部链表可能会给您带来麻烦。因为当你通过SCM API完成所需的工作时。解决这个问题的一种方法(我过去已经这样做了)是在战略上很好的时间点重命名注册表中的密钥,并将其设置为在启动时删除而不是使用SCM API。
旁注:在MSI中,您应该始终使用ServiceInstall
/ ServiceControl
和Registry
表而不是使用代码(无论是批处理文件还是自定义操作)。这些行动已经存在,只需要对其进行排序。
答案 2 :(得分:0)
您可以使用MSIZAP。我会清除有关破碎的msi的所有信息: http://nerdoftherings.net/wp/?p=66
答案 3 :(得分:0)
方法1: 找到Setup.exe下载msi文件的目录。并执行..
msiexec /uninstall [path to msi or product code]
方法2(使用SCM):
sc <server> delete [service name]
尝试告诉我们会发生什么。