如何从 Services.msc 中删除禁用的服务

问题描述 投票:0回答:3

我想从 services.msc 中显示的服务列表中删除我用 c# 编写的一项服务。 我正在尝试使用以下命令从命令提示符中删除它。

sc 删除服务名称

但它并没有删除,而是被禁用了。

c# service
3个回答
4
投票

如果

sc delete
不起作用,您可以尝试通过注册表删除它。 首先使用“运行”并输入
regedit
,然后转到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
。 然后在左侧窗格中找到服务名称,右键单击它并删除。重新启动系统后您将看到结果。


2
投票

根据MSDN

如果服务正在运行或者另一个进程有一个打开的句柄 该服务,该服务被标记为删除。

所以你必须先停止你的服务:

sc stop servicesName
sc delete servicesName

0
投票

在删除服务之前必须停止该服务,以避免可怕的

Disabled
直到重新启动状态,这是正确的。如果您已经处于该状态,唯一的出路就是重新启动。所以下次我们就避免这种情况吧。

在实践中,与

sc.exe stop
相比,
net stop
的工作方式似乎存在一些差异,其中使用 sc 并不总是会导致干净删除。使用 net 命令总是可以的。

您还需要在命令之间给它一点时间。

这是一个在实践中对我有用的 NSIS 安装程序脚本示例。

  nsExec::ExecToLog "net stop $\"${Title}$\""

  Sleep 333

  nsExec::ExecToLog "sc.exe delete $\"${Title}$\""
© www.soinside.com 2019 - 2024. All rights reserved.