2

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

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

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

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

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

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

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

编辑:-

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

4

3 回答 3

4

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

try
{
    Process [] proc Process.GetProcessesByName("YourAppName");
    proc[0].Kill();
}
于 2013-08-20T02:43:42.410 回答
3

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

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

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

另一种方法是在您的项目中创建一个 App Manifest 文件并将级别设置为“管理员”。

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

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

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

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

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

于 2013-08-21T01:11:59.330 回答
2

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

于 2013-08-20T01:57:14.083 回答