验证服务是否被标记为删除

cte*_*scu 3 c# wix wix3.5

有时,当我卸载安装程序(使用 WIX 制作)时,该服务仍标记为删除,用户必须重新启动机器才能再次安装。我如何验证该服务是否被标记为删除并告诉用户在进行其他安装之前重新启动计算机?

Raf*_*era 5

一般来说,当某些内容仍然锁定在该服务上时,就会发生这种情况,从而阻止 Windows 删除其在注册表中的配置。(在大多数情况下,它只是服务小程序 -- services.msc -- 在后台意外打开。)

对于检测,我建议您阅读CreateService和其他Service API。例如,如果服务被标记为删除,您将在调用 CreateService 时收到 ERROR_SERVICE_MARKED_FOR_DELETE。

关于您提出的重新启动解决方案... Windows 已经发展得足够远,几乎不需要出于任何原因重新启动。除非您正在安装专门的内核驱动程序,否则您不需要重新启动。不要偷懒!把用户放在心上!我建议更改您的安装程序逻辑以检测潜在冲突的运行程序,例如服务小程序,并建议关闭。

  • 您认为如何检测服务小程序是否已加载到 mmc 中? (2认同)