セキュリティ記述子(nTSecurityDescriptor 属性)について DirectoryEntry.ObjectSecurityプロパティのとこで ADSI の 3 つのインターフェイスの名前に似たクラスが .NET にあるはずと思ったので調べてみました。
  
 セキュリティ記述子である IADsSecurityDescriptor ですが、対応するのは CommonSecurityDescriptor クラスで、説明は次のように書かれてます。
 セキュリティ記述子を表します。 セキュリティ記述子には、所有者、プライマリ グループ、随意アクセス制御リスト (DACL: Discretionary Access Control List)、システム アクセス制御リスト (SACL: System Access Control List) が含まれます。
 この説明にある 4 つは順に Owner、Group、DiscretionaryAcl、SystemAcl プロパティで IADsSecurityDescriptor インターフェイスのメンバと同じです。(型は違います)
 SecurityDescriptor 関連クラスの継承階層は次のようになってます。
  System.Object
   System.Security.AccessControl.GenericSecurityDescriptor
    System.Security.AccessControl.CommonSecurityDescriptor
    System.Security.AccessControl.RawSecurityDescriptor
  
 CommonSecurityDescriptor.DiscretionaryAcl プロパティの型は DiscretionaryAcl クラスで、IADsAccessControlList に対応する 随意アクセス制御リストを表すクラスです。
 ちなみに CommonSecurityDescriptor.SystemAcl プロパティの型は SystemAcl クラスで、IADsAccessControlList に対応する システム アクセス制御リストを表すクラスです。
 ACL 関連クラスの継承階層は次のようになってます。
  System.Object
   System.Security.AccessControl.GenericAcl
    System.Security.AccessControl.CommonAcl
     System.Security.AccessControl.DiscretionaryAcl
     System.Security.AccessControl.SystemAcl
    System.Security.AccessControl.RawAcl
  
 随意アクセス制御リストの各要素であるアクセス制御エントリは IADsAccessControlEntry で、これに対応するクラスは 2 つあります。
 1 つは アクセス制御エントリを表す CommonAce クラスです。
 もう 1 つは ディレクトリ オブジェクトに関連付けられたアクセス制御エントリを表す ObjectAce クラスです。
 ACE 関連クラスの継承階層は次のようになってます。
  System.Object
   System.Security.AccessControl.GenericAce
    System.Security.AccessControl.CustomAce
    System.Security.AccessControl.KnownAce
     System.Security.AccessControl.CompoundAce
     System.Security.AccessControl.QualifiedAce
      System.Security.AccessControl.CommonAce
      System.Security.AccessControl.ObjectAce
  
 MSDN ライブラリを見ると DiscretionaryAcl.Item プロパティ(CommonAcl から継承)は次のように書かれてます。(下は原文)
 指定したインデックス位置にある CommonAce を取得または設定します。
 Gets or sets the CommonAce at the specified index.
 プロパティの型は GenericAce で、GenericAcl.Item をオーバーライドしてます。
 GenericAcl.Item の方は「CommonAce」じゃなく「GenericAce」となってます。
 DiscretionaryAcl(随意アクセス制御リスト)内には ObjectAce クラスのアクセス制御エントリもあるので、「CommonAce を取得または設定」よりは「QualifiedAce を取得または設定」の方がまだいいのではないかと思いますね。
 少なくても 説明まで上書きしなくても・・・
  
 ひとまずこれらのクラスを使って ADSI の時と同じ内容(列挙値の文字列が異なるだけ)の出力ができるようにしてみます。
 コードの量は確実に増えると思いますが・・・