2014-01-31 16 views
1

給定一個特定的文件系統路徑(文件夾或文件,無所謂),我需要生成一個字符串來反映每個委託人對該路徑的訪問權限。作爲字符串的Windows文件權限

後我的結果將是非常相似,你在高級安全設置對話框中的權限選項卡在Windows中看到:

Windows Advanced Security Dialog

,我將在一個User1: [access], User2: [access], etc.格式最終顯示。

實現此結果的直接方法是什麼?具體來說,哪些Windows安全API函數必須執行,並且按什麼順序?

回答

2

使用FILE_FLAG_BACKUP_SEMANTICS和FILE_GENERIC_READ屬性(或在一起)通過CreateFile打開文件。

然後用獲得的文件句柄,調用GetKernelObjectSecurity。然後解析出由此調用返回的SECURITY_DESCRIPTOR。

您可能需要了解ACL和DACL。

+0

感謝您的回覆。你有沒有以與我原來的問題一致的方式解析出SECURITY_DESCRIPTOR的例子? – Mark

+0

@Mark:您可以通過['ConvertSecurityDescriptorToStringSecurityDescriptor'](http://msdn.microsoft.com/en-us/library/windows/desktop/aa376397%28v=vs.85%29.aspx)快速入門。 –

+0

@Roman:該函數確實將安全描述符轉換爲字符串,但結果主要不是爲了便於閱讀而設計的。我一直在尋找方法將它們轉換爲更友好的格式(就像我在原始問題中描述的那樣),但無濟於事。 – Mark