如何解决“指定的服务标记为删除”
尝试使用services.msc删除Windows服务,出现以下错误:
[SC] DeleteService FAILED 1072 :
指定的服务被标记为删除。
我已经做了什么?
很明显停止了服务。 services.msc将显示以下结果:
services.msc
确认Microsoft管理控制台(services.msc )已关闭,然后单击,
确保事件查看器已关闭,然后单击、
密钥HKEY _ local _ machinesystemcurrent control setservices _ & amp; lt; 服务名称& amp; gt; 从注册表中。
为了删除,services.msc中包含“&; lt; 无法读取说明”。 错误代码:2&; gt; “。 尝试显示属性时,会显示“找不到指定的文件。 ”显示5次。
问题依然存在。
下一步怎么办?
17个解决方案
989 votes
服务卡变为“删除标记”的原因可能有几个。
系统处理资源管理器打开。 关闭时,服务将自动删除。
任务管理器打开了。
微软管理控制台(MMC )已打开。 要确保关闭所有实例,请运行taskkill /F /IM mmc.exe。
服务控制台打开了。 这和前面的点一样。 因为服务控制台由MMC托管。
事件查看器已打开。 同样,这和第三点相同。
密钥HKEY _ local _ machinesystemcurrent control setservices{ service name }存在。
其他人登录到服务器并打开了上述APP应用程序之一。
用于调试服务的Visual Studio实例已打开。
arsenimourzenkoanswered 2019-01-04t 07336024336044 z
166 votes
也可以通过保持服务控制台打开来实现这一点。 在结束服务之前,Windows不会实际删除服务。
forcedfxanswered 2019-01-04t 07:25:08 z
33 votes
我的情况是关掉服务工作。 检查Services.msc是否打开,如果打开,请将其关闭,然后检查Task Manager服务进程。
sumitagrawalanswered 2019-01-04t 07336025336034 z
33 votes
你好,你好,我有同样的问题。 最后决定杀死服务流程。
尝试以下步骤:
获取服务的进程ID
taskkill /F /PID
杀戮的过程
taskkill /F /PID
alisadrianswered 2019-01-04t 07336026336028 z
8 votes
如上删除注册表项将导致服务停止。 下一步对我有帮助:
任务管理器&; gt; 选择服务标签&; gt; 选择服务&; gt; 右键单击并选择“转至进程”&; gt; 右键单击进程,然后选择“终止进程”
在那之后,服务应该消失
mathart 63 answered 2019-01-04t 07336027:12 z
7 votes
这意味着服务在services.msc中被列为无效。 只需关闭services.msc并以管理员身份重新打开.此服务将不会显示。 使用命令安装服务,然后单击、
installutil "服务之路"
ameypnaikanswered 2019-01-04t 07336027336044 z
6 votes
还有一点需要检查-请看任务管理器-如果其他用户连接到此框,即使他们“断开连接”,也需要实际签名并最终删除服务。
kathygrytaanswered 2019-01-04t 07336028336007 z
6 votes
Windows 7或更高版本(未经验证,但根据Windows Server 2012 R2的最新经验,服务控制管理器) ) SCM )似乎更为严格。
在Windows 7中,您只需要生成另一个进程,但仍然存在服务进程,然后调用error _ service _ marked _ for _ deleteservice
现在我要谈的是Windows API代码,因为我想清楚地概述发生的事情,所以这个序列可能会导致提到的错误:
sc _ handle hscm=open scmanager (nullptr,nullptr,
SC_MANAGER_ALL_ACCESS);SC_HANDLE hSvc = OpenService(hScm, L"Stub service", SERVICE_STOP | SERVICE_QUERY_STATUS | DELETE);
SERVICE_STATUS ss;
ControlService(hSvc, SERVICE_CONTROL_STOP, &ss);
// ... wait for service to report its SERVICE_STOPPED state
DeleteService(hSvc);
CloseServiceHandle(hSvc);
hSvc = nullptr;
// any further calls to CreateService/DeleteService will fail
// if service process is still around
服务流程在已经报告其SERVICE_STOPPED状态之后仍然存在的原因并不令人惊讶。 这是一个常规进程,其主要线程在其对StartServiceCtrlDispatcher API的调用中“卡住”,因此它首先响应停止控制操作,但随后必须执行其剩余的代码序列。
很遗憾SCM / OS没有为我们妥善处理这个问题。程序化解决方案有点简单和准确:在停止服务之前获取服务可执行文件的进程句柄,然后等待此句柄发出信号。
如果从系统管理角度处理问题,解决方案也是等待服务进程完全消失。
klaus triendl answered 2019-01-04T07:29:14Z
6 votes
这对我有用: - 我遇到了同样的问题:我的服务卡在'标记为删除'中。 - 我打开了services.msc 我的服务确实显示为正在运行,尽管它已经被卸载了。 - 我点击停止 收到错误消息,表示服务未处于接收控制消息的状态。 然而,服务已经停止。 - 已关闭的服务.msc。 - 重新开放的服务.msc。 - 服务已经消失(不再显示在服务列表中)。
(环境是Windows 7.)
balintn answered 2019-01-04T07:29:46Z
5 votes
就我而言,我执行taskkill /f /im dongleserver.exe,其中dongleserver.exe是我程序的exe文件。
然后我就可以重新安装我的程序了。
Sian Chiew See answered 2019-01-04T07:30:17Z
4 votes
就我而言,它是由创建eventLog源时的未处理异常引起的。 使用try catch来确定原因。
Arijus Gilbrantas answered 2019-01-04T07:30:39Z
3 votes
关闭当前打开的每个窗口,然后运行以下命令为我解决了这个问题:
taskkill /F /IM mmc.exe
Tshilidzi Mudau answered 2019-01-04T07:31:04Z
0 votes
如果@MainMa提供的步骤不起作用,请按照以下步骤操作
步骤1尝试从Windows任务管理器或使用taskkill / F / PID终止进程。 你可以通过命令'sc queryex'找到进程的pid。 如果仍然无法卸载,请尝试下一步。
第2步如果上面
运行Autoruns for Windows按名称搜索服务并删除结果。
Charith answered 2019-01-04T07:31:48Z
0 votes
错误的主要原因是过程没有停止。解决它启动任务管理器转到服务,看看你是否仍然能够看到你的服务,而不是去那个服务和结束过程的过程。 比问题将彻底解决。
Gaurav Tyagi answered 2019-01-04T07:32:10Z
0 votes
当我使用Application Verifier来验证我的win服务时,我遇到了这个问题。 即使在我关闭App Ver后,我的服务也被阻止删除。 只有从App Ver中删除服务才能解决问题并立即删除服务。 在您尝试删除某个进程后,某些进程仍在使用您的服务。
vadzvnik answered 2019-01-04T07:32:35Z
0 votes
要遵循的步骤:
步骤1转到位置C: Windows Microsoft.NET Framework v4.0.30319
step-2 run命令:installutil / u full-path / servicename.exe
步骤3关闭服务面板并重新打开它
step-4 run命令:installutil full-path / servicename.exe
Divyang Shah answered 2019-01-04T07:33:34Z
0 votes
最有可能删除服务失败,因为
protected override void OnStop()
停止服务时抛出错误。 在try catch中包装东西会阻止标记删除错误
protected override void OnStop()
{
try
{
//things to do
}
catch (Exception)
{
}
}
e03050 answered 2019-01-04T07:34:10Z