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

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

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

InstallUtil /u 

第一。 所以服务仍然列在服务MMC中。

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

你至less有三个选项。 我已经按使用偏好的顺序呈现了它们。

方法1 – 您可以使用资源工具包中包含的SC工具 (Sc.exe)。 (包含在Windows 7/8中)

打开命令提示符并input

 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 – 手动删除registry项(请注意,这在Windows 7/8中回火)

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

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 

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

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

 sc delete <service-name> 

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

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

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

命令sc query type= service (注意,格式化非常特别,使用引号)将输出安装的Windows服务列表,使用sc delete <service-name>命令使用它们的限定名称。

这个列表很长,所以你可以考虑将输出传输到一个文本文件(即>> C:\test.txt ),然后search。

SERVICE_NAME是与sc delete <service-name>命令一起使用的。

通过registry删除Windows服务

如果你知道正确的path,它很容易从registry中删除服务。 这是我如何做到这一点:

  1. 运行RegeditRegedt32

  2. 转到registry项“HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services”

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

通过命令窗口删除Windows服务

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

sc删除

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

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

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

如果你想使用它的工具,你可以使用Process Hacker

表格创build服务:

处理黑客创建服务

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

处理黑客删除服务

我发现Process Hacker比Windows自己的Taskmgr.exe更容易pipe理Windows进程和服务。 特别是在Windows XP上,根本无法从任务pipe理器访问服务。

我需要重新安装我的tomcat服务,这意味着首先删除它。 这对我工作:

 Start a command prompt window using run as administrator sc query type= service >t.txt 

(编辑文件t.txt,search列表并findtomcat服务,称为Tomcat7)

 sc delete Tomcat7 

然而,查询命令第一次没有工作,因为tomcat服务没有运行。 它似乎只列出正在运行的服务。 我不得不启动服务并再次运行查询命令。

如果原来的Service.InstallLog和.InstallState文件仍在文件夹中,则可以尝试重新安装可执行文件来replace文件,然后使用InstallUtil / u,然后卸载该程序。 这有点复杂,但对我来说,在一个特定的情况下工作。

您可以尝试运行Autoruns ,这将使您无需手动编辑registry。 这在您没有所需的权限时特别有用。

您可以通过命令提示符卸载您的Windows服务,也只是写这条命令

光盘\

cd C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319(或您开发服务的版本)

installutil c:\ xxx.exe(您的服务的物理path)-d

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

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

第二步:input以下命令

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

这里的service.exe是你的服务EXE和\ u将卸载该服务。 你会看到“卸载已经完成”的消息。

如果你想安装一项服务,请在上面的命令中删除\ u这将安装你的服务

我们发现,即使运行sc_delete ,也可能会在registry中为您的服务保留一个条目,以便重新安装服务会导致损坏的一组registry项(它们不匹配)。 我们所做的就是手动注册并删除这个剩余的条目。

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

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