
我有一些效能計數器寫入預設位置 ( %SYSTEMDRIVE%\Perflogs
) 中的 CSV 檔案。它創建的目錄是“特殊的”。當我嘗試瀏覽它們時,資源管理器抱怨
我可以單擊“繼續”,然後使用資源管理器瀏覽目錄就不再有問題。
但是,如果我嘗試透過未提升的 cmd shell 存取目錄,則會收到 ACCESS_DENIED 訊息。使用提升的命令,我可以毫無問題地存取資料檔案。
icacls 報告有關該目錄的資訊(在我瀏覽該目錄之前)
MEMTEST2_20190724-000004 NT AUTHORITY\SYSTEM:(OI)(CI)(F)
BUILTIN\Administrators:(OI)(CI)(F)
BUILTIN\Performance Log Users:(OI)(R)
我正在運行的用戶已經在Performance Log Users
.
- 當我“永久訪問此資料夾”時實際發生了什麼?
- 該目錄實際上是如何防止非提升存取的?
- 有沒有一種好方法可以「取消保護」目錄,而無需重新配置效能計數器以寫入不同的位置?
- 我讀這個答案,它描述瞭如何建立事件偵聽器以在計數器啟動時取消對目錄的保護。難道就沒有別的辦法了嗎?
答案1
此行為是由使用者帳戶控制引起的:即使您屬於管理員群組,您執行的進程(包括Windows 資源管理器和CMD)實際上也不具有管理權限,您必須使用「以管理員身分執行」命令顯式請求它們;然而,這對資源管理器本身來說是無法完成的,因為它總是在運行,因此你不能運行它的另一個提升的實例(除非你先殺死它,從而丟失你的外殼;這是可以做到的,但它需要笨拙的解決方法)。
然而,Windows 資源管理器本身就知道 UAC 的工作原理;因此,當您嘗試存取只有管理員有權存取的資料夾時,它會偵測到您是管理員成員,但它不是在提升模式下運行,它會嘗試提供幫助並詢問您是否要“永久訪問”該資料夾;如果你點擊Continue
您的使用者帳戶的明確授予 ACE 將會新增至該資料夾中:這允許您直接存取該資料夾,而不是依賴您的管理權限,從而繞過 UAC。
我感到困惑的是,這是 UAC 和 Explorer 的標準(但有爭議)行為,但是僅當涉及管理權限時才會發生;如果您因為屬於可以存取某個資料夾的普通(非管理員)群組而有權存取該資料夾,則 UAC 根本不應該參與其中。
除非就 UAC 而言,Windows 將「效能日誌使用者」群組視為「管理員」群組,因此需要提升才能實際使用其成員資格;如果是這種情況,這對我來說就是新聞,而且我找不到任何地方引用它。