我在Linux中工作。在具有stat函數的Linux中,我們可以提取文件的權限。在windows中查找文件的權限
同樣,我們如何在Windows中提取文件的權限。
msdn中的_stat函數聲明在stat緩衝區中設置了權限位。但它沒有給出如何提取它們。
http://msdn.microsoft.com/en-us/library/14h5k7ff%28VS.71%29.aspx
我在Linux中工作。在具有stat函數的Linux中,我們可以提取文件的權限。在windows中查找文件的權限
同樣,我們如何在Windows中提取文件的權限。
msdn中的_stat函數聲明在stat緩衝區中設置了權限位。但它沒有給出如何提取它們。
http://msdn.microsoft.com/en-us/library/14h5k7ff%28VS.71%29.aspx
我在你提供的等等,如_stat
實現和朋友的文件權限是UNIX具體的閒置NTFS,FAT和其他Windows文件系統的鏈接閱讀。
我想你會有更多的運氣使用經典FindFirstFile和相關功能讀取文件權限。你需要處理返回的句柄here 這些是非常不可移植的,但由於C++沒有文件系統支持,它們是唯一不錯的選擇。
Windows使用ACL(訪問控制列表)來控制對文件(或其他內核對象)的訪問。您可以使用GetFileSecurity
(您需要DACL,而不是SACL)獲取文件的ACL。然後您可以從GetEffectiveRightsFromAcl
獲得實際權限(權利)。
這有一個競爭條件,所以它很少是一個好主意,但。特別是,在檢索DACL的時間和嘗試對文件執行操作的時間之間,DACL可能已經更改,因此檢索到的內容不再正確。
結構統計結構確實不是包含Windows上的任何文件權限信息。 Windows安全性更加複雜,你需要GetFileSecurity()來檢索文件的DACL。這很少在Windows程序中完成,您通常會讓Windows評估有效權限並處理「您無法做到」錯誤返回。來自GetLastError()的ERROR_ACCESS_DENIED。
MSDN並沒有像它應該那麼多的超鏈接,你需要搜索一下,找到_stat
Structure st_mode
Field Constants。
在Unix和Windows上,您只能獲得文件的基本權限,而不能訪問控制列表。由於Windows使用ACL很多,因此_stat
不會爲您提供太多有用的信息。您需要使用本地Windows API函數來獲取ACL。
Windows權限和Unix權限的實現方式完全不同;我不認爲你會嘗試在Windows上使用stat。 – Luke 2010-08-10 13:50:51