為新的目錄物件建立安全性描述元

您可以使用 ADSI 來建立安全性描述元,並將其設定為新物件的 nTSecurityDescriptor 屬性,或使用它來取代現有物件的 nTSecurityDescriptor 屬性。

若要為物件建立安全性描述元:

  1. 使用 CoCreateInstance 為新的安全性描述元建立 ADSI COM 物件,並取得該物件的 IADsSecurityDescriptor 介面指標。 請注意,類別識別碼 CLSID_SecurityDescriptor
  2. 使用 IADsSecurityDescriptor::p ut_Owner 方法來設定物件的擁有者。 信任者是使用者、群組或其他安全性主體。 應用程式應該使用來自要套用 ACE 之信任者使用者或群組物件之適當屬性的值。
  3. 使用 IADsSecurityDescriptor::p ut_Control 方法,控制物件是否從其父容器繼承 DACLs 和 SCL。
  4. 使用 CoCreateInstance 為新的安全性描述元建立 DACL 的 ADSI COM 物件,並取得該物件的 IADsAccessControlList 介面指標。 請注意,類別識別碼 CLSID_AccessControlList
  5. 若要讓每個 ACE 新增至 DACL,請使用 CoCreateInstance 為新的 ACE 建立 ADSI COM 物件,並取得該物件的 IADsAccessControlEntry 介面指標。 請注意,類別識別碼CLSID_AccessControlEntry。
  6. 若要讓每個 ACE 加入 DACL,請使用 ACE 的 IADsAccessControlEntry 物件的屬性方法來設定 ACE 的屬性。 如需在 ACE 上設定之屬性的詳細資訊,請參閱 在物件上設定存取權限
  7. 若要讓每個 ACE 新增至 DACL,請在IADsAccessControlEntry物件上使用QueryInterface方法來取得IDispatch指標。 IADsAccessControlList::AddAce方法需要 ACE 的IDispatch介面指標。
  8. 若要讓每個 ACE 新增至 DACL,請使用 IADsAccessControlList::AddAce 將新的 ACE 新增至 DACL。 請注意,ACL 內 ACE 的順序可能會影響物件的存取權評估。 正確的物件存取權可能需要您建立新的 ACL、以正確的順序將 ACL 中的 ACL 新增至新的 ACL,然後將安全性描述元中的現有 ACL 取代為新的 ACL。 如需詳細資訊,請參閱 DACL 中的 ACE 順序
  9. 請遵循步驟 4-8,為新的安全性描述元建立 SACL。
  10. 使用 IADsSecurityDescriptor::p ut_DiscretionaryAcl 方法來設定 DACL。 如需 DACL 的詳細資訊,請參閱 Null DACLs 和空白 DACL
  11. 使用 IADsSecurityDescriptor::p ut_SystemAcl 方法來設定 SACL。
  12. 使用IADsSecurityDescriptor物件的QueryInterface方法,將IADsSecurityDescriptor物件轉換為VARIANT,以取得IDispatch介面。 然後將VARIANTvt成員設定為VT_DISPATCH,並將VARIANTpdispVal成員設定為等於IDispatch指標。
  13. 取得 物件的 IADs 介面指標。
  14. 使用 IADs::P ut 方法搭配 「nTSecurityDescriptor」 和上面建立的 VARIANT ,將新的安全性描述元寫入屬性快取。
  15. 使用 IADs::SetInfo 方法,更新目錄中物件上的 屬性。