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

时间:2008-10-13 14:59:04

标签: windows windows-services installer

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

我使用InstallUtil安装了.NET Windows服务。我已经删除了文件但忘了运行

 InstallUtil /u

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

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

13 个答案:

答案 0 :(得分:1094)

您至少有三个选项。我按照使用偏好顺序展示了它们。

方法1 - 您可以使用资源工具包中包含的SC tool(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

Download并使用delserv命令行实用程序。这是为Windows 2000开发的传统工具。在当前的Window XP框中,这被方法1中描述的sc取代。

方法3 - 手动删除注册表项(请注意,这在Windows 7/8中适用)

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

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

答案 1 :(得分:160)

在命令提示符下,使用Windows“sc.exe”实用程序。你会运行这样的东西:

sc delete <service-name>

答案 2 :(得分:27)

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

1)使用提升的权限打开CMD窗口。 [Windows Key-X用于显示带有选项的菜单;选择“命令提示符(管理员)”。]
2)使用服务列表中的括号名称[例如,我使用“sc delete gupdate”,在服务中,它显示为“Google Update(gupdate)”]

答案 3 :(得分:20)

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

命令sc query type= service(注意,格式非常特别,“服务”之前的空间是必要的)将输出已安装的Windows服务列表,其中包含与{{1}一起使用的限定名称}命令。

列表很长,所以你可以考虑将输出汇总到一个文本文件(即sc delete <service-name>),然后搜索它。

>> C:\test.txt是与SERVICE_NAME命令一起使用的。{/ p>

答案 4 :(得分:11)

通过注册表删除Windows服务

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

  1. 运行 Regedit Regedt32

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

  3. 查找要删除的服务并将其删除。您可以查看密钥以了解服务使用的文件,并将其删除(如有必要)。

  4. 通过命令窗口删除Windows服务

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

    sc删除

    您还可以使用以下命令

    创建服务

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

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

答案 5 :(得分:9)

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

创建服务的表单:

Process Hacker Create Service

要删除服务的上下文菜单:

Process Hacker Delete Service

我发现Process Hacker是一个比Windows自己的Taskmgr.exe更有效的管理Windows进程和服务的工具。特别是在Windows XP上,您无法从任务管理器访问服务。

答案 6 :(得分: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服务没有运行。它似乎只列出正在运行的服务。我必须启动服务并再次运行查询命令。

答案 7 :(得分:3)

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

答案 8 :(得分:3)

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

答案 9 :(得分: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

答案 10 :(得分:0)

第1步:转到您的服务所在的目录

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

第二步:输入以下命令

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

此处service.exe是您的服务exe,\ u将卸载该服务。 你会看到“卸载已经完成”的消息。

如果您想安装服务,请在上面的命令中删除\ u,它将安装您的服务

答案 11 :(得分:0)

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

注意:在sc_delete!

之后,ShipmunkService仍然显示

然后您可以重新安装,您的服务将正常运行。祝大家好运,也许力量与你同在。

答案 12 :(得分:0)

最简单的方法是使用Sys Internals Autoruns

enter image description here

以管理员模式启动它,然后您可以通过删除键删除过时的服务