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
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