移动当前可执行文件 c#

Posted

技术标签:

【中文标题】移动当前可执行文件 c#【英文标题】:Move current executable c# 【发布时间】:2016-06-03 20:55:39 【问题描述】:

我想将当前正在执行的程序集移动到 C 盘。当我尝试以下代码时:

File.Move(Assembly.GetEntryAssembly().Location, @"c\");

它给了我一个错误:

在 mscorlib.dll 中发生了“System.UnauthorizedAccessException”类型的未处理异常

这可以解决吗?

【问题讨论】:

您无法移动当前的可执行文件,因为系统正在打开它。 正在运行的程序的EXE不能移动,但是可以复制。 你得到什么异常? @duDE mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常 @Gewoo:很高兴知道! 【参考方案1】:

您必须为目标文件提供一个名称

File.Move(Assembly.GetEntryAssembly().Location, @"c:\xxx\foo.exe");

(写在C的根部:需要提升)

【讨论】:

[已测试] 我不敢相信它真的有效;它复制并删除了原始文件。 :O 什么都没有被删除——你不能删除正在运行的可执行文件,但移动就是重命名,它只是对文件系统的更新,这不会干扰正在运行的映像。 @AlexK。 ,我有一个问题 - 这可以更新应用程序吗?说,我将文件移动到 .bak,创建一个新的 .exe,然后做 Application.Restart(); ?还是我错过了什么:D

以上是关于移动当前可执行文件 c#的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中获取当前可执行文件的名称?

C#获取本执行程序所在的当前路径

C#如何编译为二进制可执行文件?

在可执行文件中包含引用

C# WinForm获取 当前执行程序路径的几种方法

在单个可执行文件中组合 C# 和 C++ 代码