取り組んでいるものが管理ツールであるという関係上、あまり目立った成果が出ていませんが、MagSite1の開発は続いています。
ようやく、少し本腰を入れてコードを書けるようになってきました。
それはさておき、管理ツール開発上の最大の難関は、IISを自作プログラムから制御するということですが、これは「分からないよ~」と悲鳴を上げつつ2月ぐらいに何とか目処を付けていました。この時点で、特定の仮想ディレクトリの新規作成と、Webサイトの新規作成ができる目処が立っていました。
しかし、いざそれらの作業に取りかかろうとして、はたときづきました。
仮想ディレクトリの新規作成で、Webサイトを選択できないのは重大な問題であると。
そこで、そのサーバ上のWebサイト一覧を取得する必要に迫られました。
あの分かりにくいIISとADSIの世界をまた彷徨う苦痛を味わうのか……。しかも、2月にやった作業はかなり忘れています。
ところが、いざ取り組んでみると、あっさりと実現できました。基本構造が把握できてしまうと、応用は容易ということでしょうか。
以下にスパイクしたサンプルソースを掲載します。
Windows XPとWindows 2000 ServerとWindows Server 2003で動作確認しています。
IISのWebサイト一覧を出力するサンプルソース (ADSI経由) §
Visual Studio.NET 2003で作成したものです。
コンソールアプリケーションです。
System.DirectoryServices.dllへの参照を追加する必要があります。
using System;
using System.DirectoryServices;
namespace AdminIIS001
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
string serverName = "localhost";
System.DirectoryServices.DirectoryEntry IISAdmin;
IISAdmin = new System.DirectoryServices.DirectoryEntry(
"IIS://" +serverName +
"/W3SVC");
foreach(System.DirectoryServices.DirectoryEntry v in IISAdmin.Children)
{
if( v.SchemaClassName == "IIsWebServer" )
{
Console.WriteLine(v.Name);
Console.WriteLine(v.Properties["ServerComment"][0].ToString());
}
}
}
}
}