我尝试用sc delete <服务名>删除一个Windows服务,并遇到以下错误:

[SC] DeleteService FAILED 1072: 指定的服务已标记为删除。

我已经做了:

Stopped the service, obviously. The sc queryex "<service name>" gives the following result: SERVICE_NAME: Stub service TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 1067 (0x42b) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 0 FLAGS : Ensured that Microsoft Management Console is closed (taskkill /F /IM mmc.exe), Ensured that Event Viewer is closed, Removed the key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<service name> from the registry. Due to this removal, services.msc still shows the service (with a name, but no status or startup type), but the description is “<Failed to Read Description. Error Code: 2 >”. When attempting to view the properties, “The system cannot find the file specified.” is shown five times.

问题依然存在。

下一步是什么?


当前回答

最有可能的是,删除服务失败是因为

protected override void OnStop()

停止服务时抛出错误。将内容包装在try catch中可以防止标记删除错误

protected override void OnStop()
{
            try
            {
                //things to do
            }
            catch (Exception)
            {
            }

}

其他回答

在我的情况下,我执行taskkill /f /im dongleserver.exe, 其中dongleserver.exe是我程序的exe文件。

然后我就可以重新安装我的程序了。

在我的情况下,这是由创建eventLog源时未处理的异常引起的。使用try catch来确定原因。

这意味着服务在services.msc中仍然被列为禁用。 只要关闭服务。MSC并以管理员身份重新打开… 该服务将不会被列出。现在,使用命令安装服务,

安装“服务路径”

按照上面的建议删除注册表项使我的服务停留在停止状态。下面的步骤对我很有效:

打开任务管理器>选择服务选项卡>选择服务>右键单击选择“转到进程”>右键单击进程选择“结束进程

服务应该在那之后就结束了

在我的例子中,服务名称是“Monitor”,它也被一个名为“Monitor”的windows服务使用,当我试图更新我的服务时,我尝试卸载它们,安装程序试图删除windows服务“Monitor”,但它不能,安装总是回滚。

我最终将我的服务重命名为其他东西