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