次の方法で共有


オブジェクトのACLの制御アクセス権セットの読み取り

ADSIを使用すると、ACL内の他のACEと同様に、制御アクセス権のACEを読み取ることができます。 Win32 セキュリティ API を使用して、ディレクトリ オブジェクトの ACL を読み取ることもできることに注意してください。 ただし、制御アクセス権は、制御アクセス権の付与と拒否に固有の方法でIADsAccessControlEntryインターフェイスのプロパティを使用します。

  • AccessMaskにはADS_RIGHT_DS_CONTROL_ACCESSが含まれている必要があります。
  • Flags値はADS_FLAG_OBJECT_TYPE_PRESENTです。
  • ObjectTypeは、制御アクセス権の rightsGUID属性の文字列形式です。 GUIDの文字列形式は、StringFromGUID2ライブラリ関数と同じ文字列形式です。
  • AceTypeは、トラスティに制御アクセス権を付与するADS_ACETYPE_ACCESS_ALLOWED_OBJECTか、トラスティに制御アクセス権を拒否するADS_ACETYPE_ACCESS_DENIED_OBJECTです。
  • Trustee はセキュリティプリンシパルであり、ACEが適用されるユーザー、グループ、コンピューターなどである。

ADSIオブジェクトのACEを読み取るには、次の手順を使用します。 次の手順は、CおよびC++アプリケーションに適用されます。

ADSIオブジェクトのACEを読み取るには

  1. オブジェクトへのIADsインターフェイスポインターを取得します。
  2. IADs::Getメソッドを使用して、オブジェクトのセキュリティ記述子を取得します。 セキュリティ記述子を含むプロパティの名前は"nTSecurityDescriptor"です。 このプロパティは、IDispatch ポインターを含む VARIANT として返されます。 vtメンバーがVT_DISPATCHであることに注意してください。 その IDispatch ポインタに対して QueryInterface を呼び出し、IADsSecurityDescriptor インタフェースを取得して、そのインタフェースのメソッドを使ってセキュリティディスクリプタのACLにアクセスする。
  3. IADsSecurityDescriptor::get_DiscretionaryAclメソッドを使用して、ACLを取得します。 メソッドはIDispatchポインターを返します。 その IDispatch ポインターで QueryInterface を呼び出して、IADsAccessControlList インターフェイスを取得し、そのインターフェイスのメソッドを使用してACL内の個々のAceにアクセスします。
  4. IADsAccessControlList::get__NewEnumメソッドを使用して、Aceを列挙します。 メソッドはIUnknownポインターを返します。 IEnumVARIANT インターフェイスを取得するには、その IUnknown ポインターで QueryInterface を呼び出します。
  5. IEnumVARIANT :: Nextメソッドを使用して、ACL内のAceを列挙します。 プロパティは、IDispatch ポインターを含む VARIANT として返されます。 vtメンバーがVT_DISPATCHであることに注意してください。 その IDispatch ポインターで QueryInterface を呼び出して、ACE を読み取るための IADsAccessControlEntry インターフェイスを取得します。
  6. IADsAccessControlEntry::get_AccessMask メソッドを呼び出して AccessMask を取得し、ADS_RIGHT_DS_CONTROL_ACCESS フラグの AccessMask 値を確認します。 このフラグが設定されている場合、ACEにはコントロールアクセス権が含まれています。
  7. IADsAccessControlEntry::get_Flagsメソッドを呼び出して、オブジェクトの種類のフラグを取得します。
  8. ADS_FLAG_OBJECT_TYPE_PRESENT フラグの Flags 値を確認します。 FlagsADS_FLAG_OBJECT_TYPE_PRESENTに設定されている場合は、IADsAccessControlEntry::get_ObjectTypeメソッドを呼び出して、ACEが適用されるコントロールアクセス権のrightsGUIDを含む文字列を取得します。
  9. IADsAccessControlEntry::get_AceTypeメソッドを呼び出して、ACEの種類を取得します。 この型は、トラスティにコントロールアクセス権を付与するADS_ACETYPE_ACCESS_ALLOWED_OBJECT、またはコントロールアクセス権を拒否するADS_ACETYPE_ACCESS_DENIED_OBJECTになります。
  10. IADsAccessControlEntry::get_Trusteeメソッドを呼び出して、セキュリティプリンシパルを取得します。これは、ACEが適用されるユーザー、グループ、コンピューターなどです。
  11. ObjectType 文字列とTrustee文字列の使用が終了したら、SysFreeStringを使用して、これらの文字列のメモリを解放します。
  12. インターフェイスの使用が終了したら、Releaseを呼び出して、すべてのインターフェイス参照をデクリメントまたは解放します。