• C# 以管理员权限删除文件


    前言

    通过后台,想删除C盘下”C:\Windows\winsxs\Backup“的缓存文件。

    然后提示对路径“C:\Windows\winsxs\Backup\amd64_hid-user.resources_31bf3856ad364e35_10.0.17134.1_zh-cn_aaa986c13b7eadf9.manifest”的访问被拒绝

    找到文件,我们可以看到

    • 点击右键菜单,会有管理员权限提示图标。
    • 查看属性,发现权限属性中,并没有删除和操作的权限

    解决方案

     如何删除此项”需要提示管事员权限才能删除的文件“呢?

    尝试了很多方法

    • 给文件/文件夹,添加权限控制。通过FileSecurity.AddAccessRule添加文件访问权限FileSystemAccessRule? -- 没有用
    • 去除文件的只读属性。FileInfo.Attributes ^= FileAttributes.ReadOnly -- 没用
    • 通过CMD删除文件/文件夹,开启管理员模式 StartInfo.Verb = "runas" -- 也无法删除

    有一种方案,设置当前应用程序以管理员身份运行,即在VS的工程右键添加”应用程序清单文件“。

     

    添加后,设置以管理员权限运行。

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

     

    注:

    asInvoker : 应用程序以当前的权限运行。

    highestAvailable: 当前用户可以获得的最高权限运行。

    requireAdministrator: 以系统管理员权限运行。

     添加后,启动程序,会弹出提示。选择第一个选项”管理员身份“,VS会自动重启。之后编译发布成一个exe,就能以管理员身份访问系统文件啦。

    附加

    System权限

    注:获取管理员权限后,可删除一些路径如C:WindowsSoftwareDistributionDownload下的文件。

    通过管理员权限可删除一切系统文件?不是的,还有一种权限,System。

    比如删除C:WindowsWinSxSBackup下的文件,提示“你需要权限才能执行此操作”,这个暂时没有找到解决方案

     只读属性

    即使当前是管理员权限,也无法删除只读的文件。所以需要取消只读

    1     //1.如果是只读,则取消只读
    2     if ((fileInfo.Attributes & FileAttributes.ReadOnly) > 0)
    3         fileInfo.Attributes ^= FileAttributes.ReadOnly;

    关键字:以管理员身份启动程序、清理C盘文件

  • 相关阅读:
    hive从入门到放弃(一)——初识hive
    LeetCode 2040. Kth Smallest Product of Two Sorted Arrays
    LeetCode weekly contest 278 (amazon pay)
    LeetCode Weekly Contest 281
    《前端运维》一、Linux基础06Shell流程控制
    《前端运维》一、Linux基础05Shell运算符
    一比一还原axios源码(二)—— 请求响应处理
    一比一还原axios源码(八)—— 其他功能
    一比一还原axios源码(三)—— 错误处理
    《前端运维》一、Linux基础04Shell变量
  • 原文地址:https://www.cnblogs.com/kybs0/p/9858779.html
Copyright © 2020-2023  润新知