主婦と.NETと犬のぶろぐ

奥様 と プログラム と お犬様 の 楽しい日常

目次

Blog 利用状況

ニュース

書庫

日記カテゴリ

DirectoryEntry(System.DirectoryServices.DirectoryEntry)

DirectoryEntry や DirectorySearcher については、宇宙仮面さん のところに詳細に書いてあります。
なので、困った時の宇宙仮面さんのページに訊けばたいていの事は解ります。
なので、メモとしては宇宙仮面さんのページのリンクがはってあれば十分な気がしますが、
@Programing! - ASP.NET(C#) - さん や、om さん のとこで DirectoryEntry を使って IIS を操作してたのが面白そうだったので
VB で遊んでみました。
ちなみに、om さんがおっしゃっている ' リソースキットのIIS Metabase Explorer ' なるもの達は、以下の URLからダウンロードできます。
http://www.microsoft.com/downloads/details.aspx?familyid=56fc92ee-a71a-4c73-b628-ade629c89499&displaylang=en

ついでに、ふじこを自分のコンピューターのユーザーに追加して、
Power Users グループに所属させ、速効削除する、という意味のないコードも書いてみました。

■参考文献
DirectoryEntry クラス
System.DirectoryServices の使用
アクティブディレクトリ (ADSI)(宇宙仮面さん)
IIS を再起動する(@Programing! - ASP.NET(C#) - さん)
om's System:IIS(om さん)

■実行画像
ユーザーの追加 Fujiko
DirectortyEntry Fujiko

Public Class DirectoryEntryTest
    Private Sub DirectoryEntryTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' IIS 再起動
        Me.DirectoryEntry1.Path = "IIS://localhost/W3svc/1"
        Me.DirectoryEntry1.Invoke("stop")
        Me.DirectoryEntry1.Invoke("start")
        ' IIS に新しく仮想ディレクトリを追加する
        Me.DirectoryEntry1.Path = "IIS://localhost/w3svc/1/ROOT"
        Using testDir As DirectoryServices.DirectoryEntry = _
            Me.DirectoryEntry1.Children.Add("iis_test", "IIsWebVirtualDir")
            testDir.Properties("Path")(0) = "D:\iis_test"
            testDir.Properties("DefaultDoc")(0) = "index.html"
            testDir.CommitChanges()
        End Using
        ' ローカルコンピュータにユーザーを追加する
        Me.DirectoryEntry1.Path = "WinNT://" + System.Environment.MachineName + ",computer"
        Using fujiko As DirectoryServices.DirectoryEntry = _
            Me.DirectoryEntry1.Children.Add("Fujiko", "user")
            fujiko.Properties("Description").Add("これはテストのふじこです")
            fujiko.Invoke("SetPassword", "eden123")
            fujiko.CommitChanges()
            ' Group 参加
            Dim groupEntry As DirectoryServices.DirectoryEntry = _
            Me.DirectoryEntry1.Children.Find("Power Users")
            groupEntry.Invoke("Add", fujiko.Path)
            groupEntry.CommitChanges()
            ' ユーザーの削除
            groupEntry.Invoke("Remove", fujiko.Path) ' Group から脱退
            Me.DirectoryEntry1.Children.Remove(fujiko) ' Computer から脱退
        End Using
    End Sub
End Class

投稿日時 : 2007年1月11日 14:51

Feedback

# re: DirectortyEntry(System.DirectoryServices.DirectoryEntry) 2007/01/11 16:07 シャノン

なんと。
LDAPしか使えないと思ってたら、こんな面白そうな使い方があったのか…。

# re: DirectortyEntry(System.DirectoryServices.DirectoryEntry) 2007/01/11 18:39 なおこ(・∀・)

>> シャノンさん
LDAP でも遊んでみたかったのですが、おうちの環境が許してくれませんでした...orz

タイトル  
名前  
Url
コメント