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

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

目次

Blog 利用状況

書庫

日記カテゴリ

ドメインユーザのオプションプロパティの確認

前回、DirectoryEntry.Properties プロパティに保持されてる属性名とその値をテキストファイルに出力するサンプルを書きました。

この中に含まれないものはオプションプロパティから取得できます。Properties プロパティにあるものもあります。

こちらも Windowsアプリ用ですが、オプションプロパティに保持されてる属性名とその値をテキストファイルに出力するサンプルです。

VB

Private Sub OutputOptionalProperties(entry As DirectoryEntry)

  Dim adsi = DirectCast(entry.NativeObject, IADs)

  Dim schema = DirectCast(entry.SchemaEntry.NativeObject, IADsClass)

  Dim folderName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

  Dim fileName = String.Format("{0}OptionalProperties.txt", entry.Properties.Item("cn").Value)

  Dim val As Object

 

  Using writer As New StreamWriter(Path.Combine(folderName, fileName), False, Encoding.UTF8)

    For Each pname As String In DirectCast(schema.OptionalProperties, IEnumerable)

      Try

        val = adsi.GetEx(pname)

      Catch

        writer.WriteLine("{0}:<未設定>", pname)

        Continue For

      End Try

      If TypeOf val Is Byte() Then

        Dim bstr = BitConverter.ToString(DirectCast(val, Byte()))

        writer.WriteLine("{0}:{1}", pname, bstr)

      Else

        For Each pval In DirectCast(val, IEnumerable)

          writer.WriteLine("{0}:{1}", pname, pval)

        Next

      End If

    Next

  End Using

  MessageBox.Show(Me, String.Format("{0} に '{1}' を作成しました。", folderName, fileName), "プロパティ出力")

End Sub

 

C#

private void OutputOptionalProperties(DirectoryEntry entry)

{

  var adsi = (IADs)entry.NativeObject;

  var schema = (IADsClass)entry.SchemaEntry.NativeObject;

  var folderName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

  var fileName = String.Format("{0}OptionalProperties.txt", entry.Properties["cn"].Value);

  object val;

 

  using (var writer = new StreamWriter(System.IO.Path.Combine(folderName, fileName), false, Encoding.UTF8))

  {

    foreach (string pname in (IEnumerable)schema.OptionalProperties)

    {

      try

      {

        val = adsi.GetEx(pname);

      }

      catch

      {

        writer.WriteLine("{0}:<未設定>", pname);

        continue;

      }

      if (val is byte[])

      {

        var bstr = BitConverter.ToString((byte[])val);

        writer.WriteLine("{0}:{1}", pname, bstr);

      }

      else

      {

        foreach (var pval in (IEnumerable)val)

        {

          writer.WriteLine("{0}:{1}", pname, pval);

        }

      }

    }

  }

  MessageBox.Show(this, String.Format("{0} に '{1}' を作成しました。", folderName, fileName), "プロパティ出力")

}

 

前回書いたプロパティも今回のオプションのプロパティもそうですが、これはユーザに限らずグループやコンピュータなどを表す DirectoryEntry であってもそのまま使えます。

但し、実装の仕方としてはいいとは言えないので、あくまで確認用ということで悪しからずw

投稿日時 : 2013年7月15日 23:45

コメントを追加

# oxbbMuPfCUwgodbTQ 2021/07/03 1:50 https://chttr.co/status/35d0056e-745c-4631-9d22-75

Looking forward to reading more. Great blog article. Great.

# rQxJMJaggVcwkRpF 2021/07/03 4:49 https://www.blogger.com/profile/060647091882378654

Lovely website! I am loving it!! Will be back later to read some more. I am taking your feeds also.

# re: ????????????????????? 2021/08/07 23:51 hydroxychloroquine side effects heart

chloroquine without prescription https://chloroquineorigin.com/# hydroxychloroquine high

タイトル
名前
URL
コメント