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

时间:2013-08-20 01:54:50

标签: c# winforms

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

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

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

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

  3. 问题是当我尝试通过更新项目中的代码删除mainproject.exe时,它显示一个异常,说“未经授权的异常被捕获”。有谁知道为什么会这样?或者有没有人有更好的想法在应用程序中使用更新功能?

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

    Unauthorized Exception in Windows Forms - C#

    修改: -

    当我正在调试应用程序时,我能够删除.exe文件。但是当我在桌面上安装后尝试删除应用程序时,再次将异常消息视为“访问被拒绝”。

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

我找到了解决方案,为什么iam在我的应用程序中获得“访问被拒绝”异常。

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

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

另一种方法是在项目中创建App Manifest文件,并将级别设置为“administartor”。

创建App Manifest - >右键单击项目 - >添加新项目 - >从右侧窗格中选择App Manifest选项 - >单击确定

打开清单文件并将级别更改为“requireAdministartor”。

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

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

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