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盤文件

相關文章
相關標籤/搜索