zoukankan      html  css  js  c++  java
  • 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盘文件

  • 相关阅读:
    javasscript学习笔记 之 数组学习二 数组的所有方法
    JavaScript学习笔记之 数组方法一 堆栈 和队列
    JavaScript学习笔记:检测数组方法
    _bzoj1500 [NOI2005]维修数列【真·Splay】
    _bzoj1012 [JSOI2008]最大数maxnumber【Fenwick Tree】
    _bzoj1010 [HNOI2008]玩具装箱toy【斜率优化dp】
    _bzoj3224 Tyvj 1728 普通平衡树【Splay】
    _bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【分块】
    _bzoj1001 [BeiJing2006]狼抓兔子【平面图】
    _bzoj1036 [ZJOI2008]树的统计Count【树链剖分】
  • 原文地址:https://www.cnblogs.com/kybs0/p/9858779.html
Copyright © 2011-2022 走看看