如果文件不再存在,如何卸载Windows服务?


570

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

我使用InstallUtil安装了.NET Windows服务。此后,我删除了文件但忘记了运行

 InstallUtil /u

第一。因此,该服务仍列在服务MMC中。

我必须进入注册表吗?或者,还有更好的方法?



2
您还先停止了服务吗?(-> net stop yourservice)
乔斯(Jos

这里是一个非常紧密相关的线程。
RBT

这个网站对我有帮助,希望对您有帮助。howtogeek.com
howto/

Answers:


1130

您至少有三个选择。我已经按使用偏好的顺序介绍了它们。

方法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

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


23
方法3似乎逆火在Windows 7
rmiesen

29
在方法1中,尽管您在MMC上看到了该服务,但您可能会遇到“指定的服务不存在于已安装的服务中”错误!这是因为您看到的名称是DisplayName。您可以在HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services树中查找实际的服务名称,并将作为服务名称传递。
denispyr 2014年

9
在Windows 7上,方法3也对我适得其反。 <Failed to Read Description. Error Code: 2>
Zugwalt

27
注要小心,如果你使用的是带有SC PowerShell的-它会覆盖应用程序与它的设定内容cmdlet,并如果运行SC删除等等它静静地失败
JonnyRaa

10
注意:您必须在执行方法3后重新启动计算机!然后查看服务列表;现在可能已经不见了。如果它仍在列表中,则只需执行方法1将其从该列表中删除即可。
东方之地

170

在命令提示符下,使用Windows“ sc.exe”实用程序。您将运行以下内容:

sc delete <service-name>

21
如果服务名称中有空格,请用双引号将其引起来。
geoffc

2
为什么我收到[SC] OpenService失败5:访问被拒绝。
Adrian Enriquez 2014年

10
@AdrianEnriquez,以管理员身份运行cmd.exe为我修复了此问题。
foldinglettuce

3
使用命令后,在Windows 8中,该服务以禁用状态显示在MMC列表中。重新启动将从列表中删除该服务。
瑞安

有没有办法提高特权呢?键入上述命令后,我仍然收到“访问被拒绝”的信息
Nick

27

在Windows 8中使用“ sc delete”的注意事项:

1)使用提升的权限打开CMD窗口。[Windows Key-X弹出带有选项的菜单;选择“命令提示符(Admin)”。)
2)在Services列表中使用括号名称[例如,当在Services中读取“ Google Update(gupdate)”时,我使用了“ sc delete gupdate”)


20

有人提到sc delete作为答案。这就是我的方法,但是花了我一段时间才找到该<service-name>参数。

该命令sc query type= service(注意,这在格式化方面非常特殊,“服务”之前的空格是必需的)将输出已安装的Windows服务的列表,并附有与该sc delete <service-name>命令一起使用的限定名称。

该列表很长,因此您可以考虑将输出传递到文本文件(即 >> C:\test.txt),然后进行搜索。

SERVICE_NAME是使用一个sc delete <service-name>命令。


2
请参阅我对已接受答案的评论。通过在“服务”面板中查看服务的属性表,可以快速确定服务名称。
donperk 2014年

2
这是完全没有必要的:如果他们在服务列表中显示出来,你可以打开你想从服务列表中删除,该服务的属性,服务列表中,并且它会告诉你的服务名称。属性中列出的“服务名称”也具有相同的服务名称。:)
neminem

2
是的,我知道您可以通过其他方式获得这个名字。我添加了此内容是因为我很难弄清在命令中使用哪个名称。我已经在服务属性中看到了该名称,但是当时我还不知道该命令中使用的名称。对于我来说,使用命令行是转储所有已安装服务的好方法,包括用于删除的<service_name>。我有一些需要此服务的服务,因此我更容易将整个列表转储到文件中,这样我就可以直接访问它们而不必在服务管理单元中查找。
罗宾·法兰西

您可以sc query按照默认设置运行type= service
伊恩·肯普

11

通过注册表删除Windows服务

如果您知道正确的路径,则很容易从注册表中删除服务。这是我的方法:

  1. 运行RegeditRegedt32

  2. 转到注册表项“ HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet /服务”

  3. 查找要删除的服务,然后将其删除。您可以查看这些键以了解该服务正在使用哪些文件,也可以将其删除(如有必要)。

通过命令窗口删除Windows服务

或者,您也可以使用命令提示符并使用以下命令删除服务:

sc删除

您也可以使用以下命令创建服务

sc创建“ MorganTechService” binpath =“ C:\ Program Files \ MorganTechSPace \ myservice.exe”

注意:您可能必须重新引导系统才能在服务管理器中更新列表。


9

如果您希望使用工具,可以使用Process Hacker

创建服务的表格:

流程黑客创建服务

服务上的上下文菜单以将其删除:

处理黑客删除服务

与Windows自己的Taskmgr.exe相比,我发现Process Hacker是管理Windows进程和服务的更便捷的工具。尤其是在Windows XP上,您根本无法从任务管理器访问服务。


4

我需要重新安装tomcat服务,这意味着首先将其删除。这为我工作:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(编辑文件t.txt,在列表中搜索并找到tomcat服务。它称为Tomcat7)

sc delete Tomcat7

但是,由于tomcat服务未运行,因此查询命令第一次无法运行。似乎只列出正在运行的服务。我必须启动该服务,然后再次运行查询命令。


如果要查看停止的服务,请使用state参数。
哈里·约翰斯顿

3

如果原始Service .InstallLog和.InstallState文件仍在文件夹中,则可以尝试重新安装可执行文件以替换文件,然后使用InstallUtil / u,然后卸载程序。这有点令人费解,但是在我的特定情况下有效。


3

您可以尝试运行Autoruns,这将使您不必手动编辑注册表。当您没有所需的权限时,此功能特别有用。


0

第一步:移至您的服务所在的目录

命令:cd c:\ xxx \ yyy \ service

第二步:输入以下命令

命令:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

这里的service.exe是您的服务exe,\ u将卸载该服务。您将看到“卸载已完成”消息。

如果要安装服务,请在上述命令中删除\ u,以安装服务


3
OP明确表示原始文件已被删除。
AFract

0

我们发现,即使您运行sc_delete,注册表中也会为您的服务保留一个条目,因此重新安装该服务会导致一组损坏的注册表项(它们不匹配)。我们要做的是regedit手动删除此剩余条目。

注意:sc_delete之后,ShipmunkService仍会显示!

然后,您可以重新安装,您的服务将正确运行。祝大家好运,希望力量与您同在。


0

您可以通过命令提示符卸载Windows服务,也只需编写此命令

cd\                                                                   

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(or version in which you developed your service)                                           

installutil c:\\xxx.exe(physical path of your service) -d

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.