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

前言

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

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

找到文件,咱们能够看到spa

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

解决方案

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

尝试了不少方法blog

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

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

 

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

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

 

注:编译

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

highestAvailable: 当前用户能够得到的最高权限运行。

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

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

 

附加

System权限

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

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

好比删除C:\Windows\WinSxS\Backup下的文件,提示“你须要权限才能执行此操做”,这个暂时没有找到解决方案

 只读属性

即便当前是管理员权限,也没法删除只读的文件。因此须要取消只读

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

 

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

相关文章
相关标签/搜索