マイナーでもいいよね??

殆どVB系、でも .NET じゃない VB は知らないよん

目次

Blog 利用状況

書庫

日記カテゴリ

セキュリティ記述子(SecurityDescriptor)の出力の.NETクラス使用版の説明(3/3)と出力の比較

前々回前回に続いて最後は 列挙体のプロパティ値をテキスト化する ToEnumValueText メソッドです。

このメソッドは内部実装を一部変更しました。

列挙体の型が ADSI から .NET に変わったので、AceType(ACE の型)の列挙型を AceType に変更しました。

 

設定されている値の列挙体文字列を取得するとこ(Enum.GetValues メソッド)は Cast メソッドの型パラメータを Integer/int から Object/object に変更して、直後に Select メソッドを追加して値を Integer/int に変換してます。

なんでこんなことしてるかというと、AceFlags 列挙体が Byte/byte 型だからです。

あとは、取得した列挙体文字列のコレクションから「None」を削除してます。(値がないのを表す列挙値だから)

 

実際に COM 対応版(ADSI 使用版)と .NET クラス使用版の出力を較べてみました。(どれもクリックすると新しいウィンドウで拡大図が表示されます。)

まずはユーザ。列挙値の文字列は変わりましたが値は変わってないのが判ります。

DiffUser1 DiffUser2

次はグループ。こちらも列挙値の文字列は変わりましたが値は変わってないのが判ります。

DiffGroup1 DiffGroup2

最後はコンピュータ。こちらは ADSI 使用版の方が Domain Admins の ACE 1 つ分多く出てました。(中央の図)

DiffPC1 DiffPC2 DiffPC3

 

デバッグ実行して調べてみたら、SecurityDescriptor(ADSI:IADsSecurityDescriptor 、.NET:CommonSecurityDescriptor)の DiscretionaryAcl プロパティ(随意アクセス制御リスト)に含まれるアクセス制御エントリ(ACE)の数が ADSI の方が 1 つ多かったです。

.NET 版は 23 個出力されてて、このコンピュータのアクセス許可エントリの数と同じではあるんですが、プロパティ画面の項目と一致してる訳じゃないので、一致するよう出力するためには色々と調べる必要がありますね。

ACEList

投稿日時 : 2013年12月28日 0:26

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント