簡體   English   中英

如何使用Windows API正確檢查對文件的有效讀/寫訪問?

[英]How can I correctly check for effective read/write access to a file using Windows API?

我試圖使用GetEffectiveRightsFromAcl來做這件事,但是由於我所屬的團隊,它沒有為我拒絕的文件返回正確的訪問掩碼。

例如,我有一個文件unreadable.txt 如果我拒絕對當前用戶的unreadable.txt進行寫訪問,則訪問掩碼正確顯示我沒有寫訪問權限。 但是,如果我拒絕拒絕“Authenticated Users”組的寫訪問權限,則訪問掩碼意味着我具有完全訪問權限(我沒有)。

我的替代方案是手動迭代Ace列表並將我的SID與每個條目進行比較,但是我無法找到一種干凈或簡單的方法來檢查Ace是否適用於某個組,以及當前用戶是否屬於該組。

作為擴展,文件可能不存在(即,它是一個即將被寫入的新文件),在這種情況下,需要檢查對目錄的訪問。

這有什么好的解決方案嗎? 似乎應該存在一種更簡單的方法,而不是實際嘗試讀取/寫入有問題的文件。

根據GetEffectiveRightsFromAcl API限制的知識庫文章的建議,使用AccessCheck

只需嘗試使用CreateFile以所需模式打開文件 - 如果成功,則表示您具有訪問權限。 你實際上不必向文件寫任何東西,只需立即關閉它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM