首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何卸载windows服务并删除其文件而不重新启动

如何卸载windows服务并删除其文件而不重新启动
EN

Stack Overflow用户
提问于 2008-11-18 18:06:43
回答 10查看 116.1K关注 0票数 46

我的当前项目涉及部署作为Windows运行的升级.exe文件。为了用新版本覆盖现有的.exe,我目前需要:

  1. 停止服务
  2. 卸载服务
  3. 重新启动系统(因此Windows释放它保存在文件上)
  4. 部署新的.exe
  5. 重新安装服务
  6. 启动升级服务。

我想避免重新启动,这样就可以完全编写脚本/自动升级。

有什么办法可以避免重启吗?也许是一个命令行工具,可以迫使Windows放弃对旧.exe的死亡控制?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-11-19 13:47:39

代码语言:javascript
运行
复制
sc delete "service name"

将删除一个服务。我发现sc效用的定位比在安装程序中挖掘要容易得多。如果你还没有,记得停止服务。

票数 78
EN

Stack Overflow用户

发布于 2012-07-09 16:15:26

我和你有同样的问题。我有一个系统服务,我想卸载,然后作为更新的一部分重新安装。在某些系统上,如果没有重新启动,这是行不通的。问题是对DeleteService()的调用将返回ok,但是下面对CreateService()的调用会告诉我服务仍然存在,但是标记为删除(错误代码1072)。注册表将反映这一点,因为子项仍然存在(在HKLM\System\CurrentControlSet\Services下),但是"DeleteFlag“设置为1。从那时起,只有重新启动才能修复这种情况。

有些事情不起作用:

  • 使用"sc删除“:它遇到了与I相同的问题。调用将返回ok,但服务并没有真正消失,而是仍然在注册表中使用DeleteFlag = 1。
  • 删除注册表中的项。服务管理器似乎将数据库保存在内存中,而注册表只是下一次启动时的一个副本。
  • 添加等待循环,等待.exe文件被覆盖、终止进程等。
  • 关闭服务的句柄。哪一个?

但以下是起作用的地方:

在这里有关堆栈溢出的一些文章中,我注意到net.exe也有开始/停止特性(我只知道sc.exe实用程序)。奇怪的是,一个“净停止svcname”加上一个"sc删除svcname“起了作用!所以net.exe必须做一些我不做的事。

但是net.exe不包含对ControlService()的导入,那么它如何停止服务?我发现net.exe生成net1.exe,但net1.exe也不导入ControlService()。我使用了伟大的API实用程序( http://www.rohitab.com/apimonitor )来查看net1.exe在做什么,但是它从来没有调用任何看起来很有希望的东西。

但是,我看到它从NETAPI32.DLL导入了NetServiceControl() (它的名字中至少有“服务”!)。MSDN说这个功能已经过时了。不过,我在LMSvc.h中找到了原型,并在这里找到了一些参数描述:NetServiceControlorN.html。当您加载NETAPI32.DLL并使用NetServiceControl(NULL, service_name, 3, 0, 0) (3用于SERVICE_CTRL_UNINSTALL,用于停止)时,服务将在结束后停止。而且它可以在没有DeleteFlag或重新启动的情况下被删除和重新安装!

因此,这不是删除的问题,而是正确停止服务的问题。而NetServiceControl()就能做到这一点。很抱歉发了这么长的邮件,但我想这可能会对有类似问题的人有所帮助。(仅供参考,我使用Win7 SP1 x64。)

票数 15
EN

Stack Overflow用户

发布于 2008-11-18 18:10:36

您不能使用以下命令在更新之前停止服务(并在更新后重新启动)?

代码语言:javascript
运行
复制
net stop <service name>
net start <service name>

每当我测试/部署服务时,只要服务停止,我就可以上传文件而无需重新安装。我不确定你遇到的问题是不是不一样。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/299604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档