如果.NET Windows服务文件不存在,如何卸载该服务?

我使用InstallUtil安装了. net Windows服务。后来我删除了这些文件,但忘了运行

 InstallUtil /u

首先,所以服务仍然列在服务MMC中。

我要去登记吗?还是有更好的办法?


当前回答

在以管理员模式运行的命令提示符中,使用Windows的"sc.exe"实用程序。你会运行这样的程序:

sc delete <service-name>

如果服务名有一个或多个空格,则用双引号括起来(h/t @geoffc):

sc delete "<service-name>"

其他回答

如果原来的Service . installlog和. installstate文件仍然在文件夹中,您可以尝试重新安装可执行文件以替换这些文件,然后使用InstallUtil /u,然后卸载程序。这有点复杂,但对我来说在一个特定的例子中是有效的。

我们发现,即使运行sc_delete,服务的注册表中仍可能有一个条目,因此重新安装服务会导致一组已损坏的注册表项(它们不匹配)。我们所做的是重新注册,并手动删除这个剩余的条目。

注意:ShipmunkService在sc_delete之后仍然显示!

然后重新安装,您的服务将正常运行。祝你们好运,愿原力与你们同在。

在以管理员模式运行的命令提示符中,使用Windows的"sc.exe"实用程序。你会运行这样的程序:

sc delete <service-name>

如果服务名有一个或多个空格,则用双引号括起来(h/t @geoffc):

sc delete "<service-name>"

如果你想使用一个工具,你可以使用Process Hacker

表单来创建服务:

删除服务的上下文菜单:

我发现Process Hacker是一个比Windows自带的Taskmgr.exe更方便的管理Windows进程和服务的工具。特别是在Windows XP上,你根本不能从任务管理器中访问服务。

你至少有三个选择。我已经按照使用偏好的顺序列出了它们。

方法1 -您可以使用资源工具包中的SC工具(SC .exe)。 (Windows 7/8附带)

打开命令提示符并输入

sc delete <service-name>

工具帮助片段如下:

DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.

delete----------Deletes a service (from the registry).

方法2 -使用delserv

下载并使用delserv命令行实用程序。这是为Windows 2000开发的遗留工具。在当前的windows XP盒子中,这被方法1中描述的sc所取代。

方法3 -手动删除注册表项(注意这在Windows 7/8中适得其反)

Windows服务在以下注册表项下注册。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

在引用键下搜索具有服务名称的子键并删除它。(并且您可能需要重新启动才能从Services列表中完全删除该服务)