C#删除只读文件

时间:2015-01-01 15:04:54

标签: c#

你好,我基本上试图在我的应用程序中创建一个可以删除我的%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);
    }

2 个答案:

答案 0 :(得分:0)

如果你没有

,可能需要先取得所有权
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" />

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

答案 1 :(得分:0)

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