如果文件不存在,我该如何卸载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中删除服务。 这是我如何做到这一点:
-
运行Regedit或Regedt32
-
转到registry项“HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services”
-
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仍然显示出来!
然后您可以重新安装,并且您的服务将正确运行。 祝大家好运,愿力量与你同在。