我在一个windows应用程序产品中工作,这里我需要替换服务exe(安装目录)以进行升级,所以我停止了服务并尝试用给定的代码替换exe
ServiceController service = new ServiceController(servicename);
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped);
Thread.Sleep(10000);
System.IO.File.Copy(application.exe, newapplication.exe, true);
,它抛出了一个错误,如下所示,
进程无法访问文件“C:\Program Files\Myapp\application.exe”,因为它正被另一个进程使用。
但我可以确定我的服务没有任何依赖关系,我找不到在停止后替换服务文件的方法,请帮助我摆脱问题。
最佳答案
我不确定它在 C# 中是如何工作的,但在 C++ 中,您肯定首先需要从服务控制管理器 (SCM) 基础结构中注销服务,然后才能删除二进制文件。
关于c# - windows服务exe停止后如何修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431873/