c# - windows服务exe停止后如何修改?

标签 c# windows-services io

我在一个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/

相关文章:

c# - 如何使用 Related ObjectQuery 访问远程 Windows 服务

c# - Windows RT 如何逐行读取文本文件?

c# - PushSharp 通知 Apple 在服务器上生成临时 RSA 文件

c# - 将 CollectionViewSource 绑定(bind)到 ListBox

windows-services - 从可执行文件(INSTSRV.EXE 和 SRVANY.EXE)创建服务错误 - "Service started and then stopped"

io - FORTH 包括与负载?

c - 嵌入式 Linux 项目的设备读取/写入问题

c# - 在 C# 中传递和存储指向不可变类型和字符串的指针

Android 上的 C# : Xamarin or Unity?

logging - NLog 不会写入文件名包含点的目标文件