2013-02-13 98 views
0

首先,讓我問一下,在Windows-NT上按用戶進行ACL權限更改?我問的原因是因爲accesschk實用程序似乎將用戶名作爲參數,同時還需要檢查對象(在我的情況下是文件夾路徑)。如何使用C++爲特定用戶獲取文件夾的ACL權限?

無論哪種情況,您如何獲得具有C++的特定Windows用戶的文件夾的ACL權限(this stuff)?我假設我需要撥打GetNamedSecurityInfo,但是如何爲用戶帳戶獲取權限?

回答

1

訪問控制列表的整個用戶點不同。他們是訪問控制列表;他們控制哪些用戶有權訪問資源。

你是對的GetNamedSecurityInfo。它可以讓你獲得兩種ACL,即SACL和DACL。 SACL處理文件訪問審計(很少使用),DACL有權限。您可以分解與GetExplicitEntriesFromAcl返回的DACL。

+0

謝謝。但我仍然不清楚什麼。如果我調用'GetNamedSecurityInfo'來獲取文件夾路徑上的DACL,然後使用'GetExplicitEntriesFromAcl'來檢索權限,那麼用戶帳戶在哪裏起作用? – c00000fd 2013-02-13 09:50:27

+0

DACL中的每個ACE說明它適用於哪個用戶。例如,一個ACE可能會說「Bob有完全控制權」,另一個可能會說「查理可以閱讀」。這就是用戶名起作用的地方。如果您是Bob,並且您要求寫入權限,那麼它會成功。如果您是查理,並且您要求寫入權限,則它將失敗。 [MSDN上的詳細信息](http://msdn.microsoft.com/en-us/library/windows/desktop/aa374872%28v=vs.85%29.aspx)。 – 2013-02-13 12:48:04

1

「無論哪種情況,您如何通過C++獲取特定Windows用戶的文件夾的ACL權限(這個東西)?」

DACL返回一個可用於從中提取值的指針。

我有一個演示程序,你可以看看,它基本上從給定的文件或目錄加載DACL信息。下面顯示了該頁面的鏈接。

Sample GetNamedSecurityInfo() call

「我假設我需要調用GetNamedSecurityInfo但我怎麼得到許可了它的用戶帳戶?」

您可以通過調用GetAce()來遍歷列表,並從每個項目中提取域/用戶名。

再次,請參閱我用C++編寫的示例代碼。

+0

謝謝你,只有在2年前我沒問過的時候);) – c00000fd 2015-02-19 00:48:27

相關問題