我在windows窗体应用程序中有一个更新按钮。当用户单击更新按钮时,应用程序将检查应用程序的当前版本与从Web服务获得的服务器中可用的版本。如果版本不匹配,应用程序将从Web服务获得的路径下载新版本。
我目前正在同一解决方案中使用两个项目
-
应用程序运行的主要项目
-
更新项目-其用途是删除.exe文件并下载新的.exe文件。(添加更新项目作为主项目的参考)
问题是,当我试图通过更新项目中的代码删除mainproject.exe时,它显示了一个异常,上面写着"捕捉到未经授权的异常"。有人知道为什么会发生这种事吗?或者有人有更好的想法在应用程序中使用更新功能吗??
这是我用来删除文件的代码。
Windows窗体中未经授权的异常-C#
编辑:-
当我调试应用程序时,我能够删除.exe文件。但当我在桌面上安装后试图删除应用程序时,我再次收到异常消息"访问被拒绝"。
在更新按钮中,您可以将另一个小应用程序作为一个单独的进程启动,在该小应用程序中,可以使用以下代码杀死您的进程,然后删除原始应用程序。
try
{
Process [] proc Process.GetProcessesByName("YourAppName");
proc[0].Kill();
}
我找到了在应用程序中出现"访问被拒绝"异常的解决方案。
由于iam通过代码删除应用程序内部的文件,我需要拥有"管理员"的权限。
一种方法是让用户以管理员身份手动登录。但这并不是一个更好的选择。
另一种方法是在项目中创建一个应用程序清单文件,并将级别设置为"administartor"
创建应用程序清单-->右键单击项目->添加新项目-->从右侧窗格中选择应用程序清单选项->单击确定
打开清单文件并将级别更改为"requireAdministor"。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
这将解决运行应用程序时的问题,它将提示用户以管理员身份运行。
希望这对将来的人有帮助谢谢你们的支持。
应用程序是否正在运行,这就是它无法删除可执行文件的原因?如果是这样,您可以重命名正在运行的可执行文件,并将新版本放在它的位置。新版本将在下次启动应用程序时执行。