实际上**在services.msc打开时删除**服务

时间:2011-08-16 02:05:51

标签: delphi winapi service

我注意到如果services.mmc打开,“sc delete ServiceKeyName”将无效。它标记为删除(无论如何!这只是意味着就我而言,它并不是我想要的)。

我的问题是:是否有一种删除服务的方法,无论service.mmc是否打开都可以使用?或者我应该在尝试删除之前确保关闭services.mmc的任何实例吗?

我正在研究使用DeleteService

http://msdn.microsoft.com/en-us/library/ms682562%28v=VS.85%29.aspx

http://msdn.microsoft.com/en-us/library/ms682571%28v=VS.85%29.aspx

但它也谈到了关闭句柄和类似的借口,为什么它不能做用户要求做的事情立即。因此,如果DeleteService也要求关闭services.mmc,那么我将坚持使用services.mmc上的sc delete和kill进程,而不是实现DeleteService。我想要一种方法来做它所宣传的东西(没有借口 - 没有等待任何东西)。

2 个答案:

答案 0 :(得分:3)

为了实现这一点,您需要MMC管理的服务来关闭并重新打开其服务控制管理器的句柄。它不会这样做,因此你必须接受这种行为。

答案 1 :(得分:1)

我遇到了同样的事情。如果在服务名称后面传递命令-remove,即使services.mmc处于打开状态,它也会将其删除。也可以在-remove之前通过命令行net stop'servicename'首先停止服务。祝你好运。