Iam将此问题作为以下链接的系列文章
Unable to delete .exe file through c#
当我调试应用程序时,我能够删除.exe文件。但是当我在桌面上安装后尝试删除应用程序时,再次将异常消息视为“访问被拒绝”。
修改: -
我用来删除文件的代码
public bool deleteAppExecutable(string filePath)
{
try
{
if (File.Exists(filePath))
{
var di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
di.Attributes &= ~FileAttributes.ReadOnly;
SetAccessRule(filePath);
File.SetAttributes(filePath, File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
File.Delete(filePath);
}
return true;
}
catch (Exception ex)
{
return false;
}
}
public static void SetAccessRule(string filePath)
{
FileInfo dInfo = new FileInfo(filePath);
FileSecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.Delete, AccessControlType.Allow));
dInfo.Refresh();
dInfo.SetAccessControl(dSecurity);
}
答案 0 :(得分:1)
我找到了解决方案,为什么我的应用程序中出现“访问被拒绝”异常。
由于我通过代码删除应用程序内的文件,我需要拥有“管理员”的权限。
一种方法是让用户以管理员身份手动登录。但这不是更好的选择。
另一种方法是在项目中创建App Manifest文件,并将级别设置为“administrator”。
创建App Manifest - >右键单击项目 - >添加新项目 - >从右侧窗格中选择App Manifest选项 - >单击确定
打开清单文件并将级别更改为“requireAdministartor”。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
这将解决运行应用程序时的问题,它将提示用户以管理员身份运行。
希望这对将来有所帮助。 :)
答案 1 :(得分:-1)
检查您是否拥有exe所包含的文件夹(及其所有子对象)的完全权限