无法通过c#删除.exe文件

本文关键字:删除 exe 文件 | 更新日期: 2023-09-27 18:28:20

我在windows窗体应用程序中有一个更新按钮。当用户单击更新按钮时,应用程序将检查应用程序的当前版本与从Web服务获得的服务器中可用的版本。如果版本不匹配,应用程序将从Web服务获得的路径下载新版本。

我目前正在同一解决方案中使用两个项目

  1. 应用程序运行的主要项目

  2. 更新项目-其用途是删除.exe文件并下载新的.exe文件。(添加更新项目作为主项目的参考)

问题是,当我试图通过更新项目中的代码删除mainproject.exe时,它显示了一个异常,上面写着"捕捉到未经授权的异常"。有人知道为什么会发生这种事吗?或者有人有更好的想法在应用程序中使用更新功能吗??

这是我用来删除文件的代码。

Windows窗体中未经授权的异常-C#

编辑:-

当我调试应用程序时,我能够删除.exe文件。但当我在桌面上安装后试图删除应用程序时,我再次收到异常消息"访问被拒绝"。

无法通过c#删除.exe文件

在更新按钮中,您可以将另一个小应用程序作为一个单独的进程启动,在该小应用程序中,可以使用以下代码杀死您的进程,然后删除原始应用程序。

try
{
    Process [] proc Process.GetProcessesByName("YourAppName");
    proc[0].Kill();
}

我找到了在应用程序中出现"访问被拒绝"异常的解决方案。

由于iam通过代码删除应用程序内部的文件,我需要拥有"管理员"的权限。

一种方法是让用户以管理员身份手动登录。但这并不是一个更好的选择。

另一种方法是在项目中创建一个应用程序清单文件,并将级别设置为"administartor"

创建应用程序清单-->右键单击项目->添加新项目-->从右侧窗格中选择应用程序清单选项->单击确定

打开清单文件并将级别更改为"requireAdministor"。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

这将解决运行应用程序时的问题,它将提示用户以管理员身份运行。

希望这对将来的人有帮助谢谢你们的支持。

应用程序是否正在运行,这就是它无法删除可执行文件的原因?如果是这样,您可以重命名正在运行的可执行文件,并将新版本放在它的位置。新版本将在下次启动应用程序时执行。