2017-04-04 64 views
2

我需要使用Win32 API來創建具有特定權限的文件夾。正如我一直在瀏覽文檔,我發現兩個例子似乎是合理的:使用SDDL或手動創建安全描述符的區別?

  1. 這個例子創建一個DACL使用SDDL,它增加了一個SECURITY_ATTRIBUTES結構,並用它來創建一個文件夾:

    Creating a DACL

  2. 此示例手動指定SID_IDENTIFIER_AUTHORITYPSIDEXPLICIT_ACCESS結構(包括ACCESS_MASK等),TRUSTEE,依此類推,直到所得SECURITY_ATTRIBUTES結構被應用到新的對象(註冊表項,在這個例子的情況下):

    Modifying the ACLs of an Object in C++

在我看來,使用SDDL是更容易使用和更小的bug容易,一旦你過去粗糙的語法。

這兩種方法之間有什麼區別?哪種在工業中更常用?

+0

就最終結果而言,沒有區別。手動方法稍微快一點,但除非你試圖每秒產生一千個安全描述符,這並不重要。一些應用程序使用手動方法的主要原因是代碼是在SDDL存在之前編寫的。 –

+0

...儘管如果有輸入參數,即「如果您事先不知道安全描述符將需要什麼」,那麼有時可以更清楚地構建安全描述符「手動」。 –

回答

2

這幾天,你可以使用。 SDDL對於人類來說只是一個「友好」的字符串。在某些情況下,它們必須轉換爲二進制等效,然後才能被大多數安全功能使用。

如果我沒有記錯,在Windows 2000中添加了SDDL字符串支持。在每個新的Windows版本中都會添加更多well-known aliases

除非您支持Windows NT4,或者需要使用隱含的別名,否則只要使用SDDL字符串就可以。

如果速度更重要,經典的方式可能會更快。

相關問題