当系统上没有可执行的Windows Service时,该如何卸载?


166

当系统上没有可执行文件时,如何卸载Windows服务?installutil -u由于系统上没有可执行文件,因此无法运行。我仍然可以在“服务”控制台中看到该服务的条目。

导致此状态的原因可能是由于msi软件包中的问题无法正确删除服务,但是一旦服务处于此状态,如何解决该问题?


Answers:


325

通过在“管理员”命令提示符下运行以下命令,您应该可以使用sc.exe(我认为它已包含在Windows资源工具包中)将其卸载:

sc.exe delete <service name>

<service name>您在服务管理控制台中看到的服务本身的名称在哪里,而不是exe。

您可以在System文件夹中找到sc.exe,它需要管理权限才能运行。有关此Microsoft KB文章的更多信息

或者,您可以直接调用DeleteService() API。这种方式稍微复杂一点,因为您需要通过OpenSCManager()等获取服务控制管理器的句柄,但另一方面,它使您可以更好地控制正在发生的事情。


它完全符合我的要求,并从注册表中删除了该服务。它不再显示在服务控制台中。谢谢!
Magnus Lindhe,

我收到“访问被拒绝”。接下来做什么?
尼克

4
对于在PowerShell中的方法1中尝试执行命令的任何人来说,这仅是一条注释:sc不适用于与服务控制管理器进行通信。它是Set-Content命令。请改用sc.exe。
Yasser Sinjab '16

1
如果收到错误1072,请确保您没有打开服务控制面板(请参阅此其他问题
Giles

我收到以下错误。[SC] OpenService失败1060:指定的服务不存在为已安装的服务。后来尝试使用电源外壳进行同样的操作,并且有效!
crazydan

24

通过注册表删除Windows服务

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

  1. 运行RegeditRegedt32

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

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

通过命令窗口删除Windows服务

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

sc删除

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

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

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


3
这样做注册表安全吗?注册表的“最终结果”是否与的“最终结果”相同sc delete
佩里耶

5
不,我只是尝试直接从regedit中删除服务。结果,现在我要删除的服务条目保留在“服务”中,而其说明显示:“ <读取说明失败。错误代码:2>”
GJ。

11

在这里找到

我刚在Windows XP上尝试过

本地计算机:sc \\。删除[服务名称]

  Deleting services in Windows Server 2003

  We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures.

  To delete a service: 

  Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console.

  Enter command:

  sc servername delete servicename

  For instance, sc \\dc delete myservice

  (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.)

  Below is the official help of all sc functions:

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



3

创建相同服务的可执行文件的副本,并将其粘贴到现有服务的相同路径上,然后卸载。


这是一个好建议。如果那不起作用,他可能需要重新安装,运行installutil -u,然后卸载
wcm

我们必须创建相同exe的副本还是重命名任何其他文件会很好吗?
Imran Rizvi 2012年

@Samiksha,我以为他说他没有“ 可执行文件副本 ”?
Pacerier,2016年

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.