有這麼一個簡單需求
有時候,你可能希望判斷是否對文件或者文件夾有某種權限,但是又不想實際操作,只是簡單的判斷而已。舉個例子,你可能向快速地知道是否對某個文件夾是否有刪除裡面文件的權限。
一種方法是:獲取該對象的ACL,然後檢查是否當前用戶擁有希望的權限。有一個API AccessCheck可以做這件事情,調用起來也比較簡單。
這個時候,可能你會想:”等會,系統里應該有一個完整的安全組件,來判斷誰可以訪問哪個文件。為什麼不使用這個安全組件的功能呢?”
舉個例子:下面的代碼演示了如何檢查某個用戶是否具有刪除一個文件夾里的文件的權限。

代碼解析
我們通過調用CreateFile這個API來嘗試性地打開目標文件夾(你可以觀察到,我們代碼中指定了一個
FILE_FLAG_BACKUP_SEMANTICS標誌),然後請求FILE_DELETE_CHILD操作權限,如果操作成功,我們就能知道:當前用戶有權限刪除文件夾中的文件。
再一個需要注意的是:當CreateFile返回一個有效句柄後,我們不要忘記關閉這個句柄,以避免資源泄露。
最後,我們對CreateFile的返回值進行了比較,如果返回值有效,則說明我們具有我們希望的權限。
請注意,上述得到的信息,只是用來作為參考的。所以,請不要基於這個信息來做出任何安全方面的操作,為什麼?因為權限會實時變動,可能在你實際進行操作的時候,權限已經不再是你之前獲取到的權限了。
總結
我突然想起WinXP那會兒,人人都是Administrator的魔幻時代。
有道是:不是Admin不舒服斯基。
最後
Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,裡面有很多關於Windows的小知識,對於廣大Windows平台開發者來說,確實十分有幫助。
本文來自:《An easy way to determine whether you have a particular file permission》
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/250140.html
微信掃一掃
支付寶掃一掃