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:\Windows\SoftwareDistribution\Download下的文件。

通過管理員權限可刪除一切系統文件?不是的,還有一種權限,System。

比如刪除C:\Windows\WinSxS\Backup下的文件,提示“你需要權限才能執行此操作”,這個暫時沒有找到解決方案

 只讀屬性

即使當前是管理員權限,也無法刪除只讀的文件。所以需要取消只讀

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

 

關鍵字:以管理員身份啟動程序、清理C盤文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM