我想从 services.msc 中显示的服务列表中删除我用 c# 编写的一项服务。 我正在尝试使用以下命令从命令提示符中删除它。
sc 删除服务名称
但它并没有删除,而是被禁用了。
如果
sc delete
不起作用,您可以尝试通过注册表删除它。
首先使用“运行”并输入 regedit
,然后转到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
。
然后在左侧窗格中找到服务名称,右键单击它并删除。重新启动系统后您将看到结果。
根据MSDN:
如果服务正在运行或者另一个进程有一个打开的句柄 该服务,该服务被标记为删除。
所以你必须先停止你的服务:
sc stop servicesName
sc delete servicesName
在删除服务之前必须停止该服务,以避免可怕的
Disabled
直到重新启动状态,这是正确的。如果您已经处于该状态,唯一的出路就是重新启动。所以下次我们就避免这种情况吧。
在实践中,与
sc.exe stop
相比,net stop
的工作方式似乎存在一些差异,其中使用 sc 并不总是会导致干净删除。使用 net 命令总是可以的。
您还需要在命令之间给它一点时间。
这是一个在实践中对我有用的 NSIS 安装程序脚本示例。
nsExec::ExecToLog "net stop $\"${Title}$\""
Sleep 333
nsExec::ExecToLog "sc.exe delete $\"${Title}$\""