C# 删除只读文件

本文关键字:文件 只读 删除 | 更新日期: 2023-09-27 18:36:02

您好,我基本上正在尝试在我的应用程序中创建一个按钮,该按钮可以删除我的%appdata%文件夹,但是有一个问题,它一直说无法删除只读文件,所以我决定进行一些谷歌搜索,但无论如何问题仍然存在,这是我的最新尝试仍然没有任何线索?

我试图删除的是%appdata%/test,它也有子文件夹。

   private void ClearButton_OnClick(object sender, RoutedEventArgs e)
    {
        string filepath = (Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "test"));
        //Get Currently Applied Access Control
        FileSecurity fileS = File.GetAccessControl(filepath);
        //Update it, Grant Current User Full Control
        SecurityIdentifier cu = WindowsIdentity.GetCurrent().User;
        fileS.SetOwner(cu);
        fileS.SetAccessRule(new FileSystemAccessRule(cu, FileSystemRights.FullControl, AccessControlType.Allow));
        //Update the Access Control on the File
        File.SetAccessControl(filepath, fileS);
        //Delete the file
        File.Delete(filepath);
        Process.Start(Application.ResourceAssembly.Location);
        Environment.Exit(0);
    }

C# 删除只读文件

尝试使用管理权限运行应用程序。有时 C 盘需要管理员权限。

如果你

没有,可能需要先取得所有权

using System.IO;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
//Get Currently Applied Access Control
FileSecurity fileS = File.GetAccessControl(filepath);
//Update it, Grant Current User Full Control
SecurityIdentifier cu = WindowsIdentity.GetCurrent().User;
fileS.SetOwner(cu);
fileS.SetAccessRule(new FileSystemAccessRule(cu, FileSystemRights.FullControl, AccessControlType.Allow));
//Update the Access Control on the File
File.SetAccessControl(filepath, fileS);
File.SetAttributes(filePath, FileAttributes.Normal);
File.Delete(filePath);

此外,还需要使用管理权限运行应用程序。

为此,右键单击您的项目,添加 -> 新项 -> 应用程序清单文件

然后替换此行

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

有了这个

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

它将以管理员权限运行您的应用程序。

我在调试模式下运行应用程序时遇到了同样的问题。 我能够通过简单地设置 File.IsReadOnly = false 来解决它; 然后它删除了没有问题。