新しいディレクトリオブジェクトに対するセキュリティ記述子の作成

ADSI を使ってセキュリティ記述子を作成し、それを新しいオブジェクトの nTSecurityDescriptor プロパティを置き換えるか、既存のオブジェクトの nTSecurityDescriptor プロパティ.

オブジェクトのセキュリティ記述子を作成する:

  1. 用途 CoCreateInstance を使用して、新しいセキュリティ記述子のADSI COMオブジェクトを作成し、そのオブジェクトを取得する。 IADsSecurityDescriptorそのオブジェクトへのインターフェース・ポインタ。 クラスIDは CLSID_SecurityDescriptor.
  2. を使用する。 IADsSecurityDescriptor::put_Owner メソッドを使ってオブジェクトのオーナーを設定する。 受託者は、ユーザー、グループ、その他のセキュリティプリンシパルである。 アプリケーションは、ACE を適用する受託者のユーザーまたはグループオブジェクトから、適切なプロパティ の値を使用すべきである。
  3. を使用する。 IADsSecurityDescriptor::put_Control メソッドを使用して、DACL と SACL が親コンテナからオブジェクトに継承されるかどうかを制御します。
  4. 用途 CoCreateInstance を使用して、新しいセキュリティ記述子のDACL用のADSI COMオブジェクトを作成する。 IADsAccessControlList そのオブジェクトへのインターフェース・ポインタ。 クラスIDは CLSID_AccessControlList.
  5. DACLに追加する各ACEについて、以下を使用する。CoCreateInstance 新しいACEのADSI COMオブジェクトを作成して IADsAccessControlEntry interface pointer to that object. クラスIDはCLSID_AccessControlEntryであることに注意。
  6. DACL に追加する各 ACE について、ACE のプロパティ・メソッドを使用して ACE のプロパティを設定する。 IADsAccessControlEntry オブジェクト. ACE に設定するプロパティの詳細については、以下を参照してください。 オブジェクトにアクセス権を設定する.
  7. DACLに追加するACEごとにクエリインターフェース メソッドを IADsAccessControlEntry オブジェクトを取得します。IDispatch ポインター. について IADsAccessControlList::AddAce メソッドには IDispatch ACEへのインターフェース・ポインタ。
  8. DACLに追加する各ACEについて、以下を使用する。IADsAccessControlList::AddAce をクリックして、新しいACEをDACLに追加する。 ACL 内の ACE の順番は、オブジェクトへのアクセスの評価に影響する可能性がある ことに注意すること。 オブジェクトへの正しいアクセスには、新しい ACL を作成し、既存の ACL の ACE を新しい ACL に正しい順序で追加し、セキュリティ記述子の既存の ACL を新しい ACL で置き換える必要があるかもしれない。 詳しくは DACLにおけるACEの順序.
  9. ステップ 4-8 に従って、新しいセキュリティ記述子の SACL を作成する。
  10. を使用する。 IADsSecurityDescriptor::put_DiscretionaryAcl メソッドを使ってDACLを設定する。 DACLの詳細については、以下を参照のこと。 ヌルDACLと空のDACL.
  11. を使用する。IADsSecurityDescriptor::put_SystemAcl メソッドを使ってSACLを設定する。
  12. を変換する。 IADsSecurityDescriptor オブジェクトを バリアント を使用する。 クエリインターフェース のメソッドを使用する。 IADsSecurityDescriptor オブジェクトを取得する。 IDispatch interface. 次に vt のメンバーである。バリアント to VT_DISPATCH を設定する。 pdispVal のメンバーである。 バリアント に等しい。 IDispatch ポインター.
  13. を取得する。 IADs オブジェクトへのインターフェース・ポインタ。
  14. を使用する。IADs::Put メソッドに "nTSecurityDescriptor "と バリアント 新しいセキュリティ・ディスクリプタをプロパティ・キャッシュに書き込む。
  15. を使用する。 IADs::SetInfo メソッドを使用して、ディレクトリ内のオブジェクトのプロパティを更新します。