一切福田,不離方寸,從心而覓,感無不通。

C#列表所有IIS站点以及相关站点属性

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Windows.Forms.Design;

using System.DirectoryServices;

using System.Reflection;

using System.Text.RegularExpressions;

int TotalServerCount=0;

DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC");

//TotalServerCount=rootfolder.Children.SchemaFilter.Count;

foreach (DirectoryEntry child in rootfolder.Children)

{

if (child.SchemaClassName == "IIsWebServer")

{

TotalServerCount+=1;

}

}

//循环获取所有站点详细属性写入数组中

string [] arrayServerID = new string[TotalServerCount];//站点标识符

string [] arrayServerIP = new string[TotalServerCount];//站点主机头

string [] arrayServerPort = new string[TotalServerCount];//站点主机头

string [] arrayServerHeader = new string[TotalServerCount];//站点主机头

string [] arrayServerPath = new string[TotalServerCount];//站点主机头

string [] arrayServerComment = new string[TotalServerCount];//站点主机头

string [] arrayServerBinds = new string[TotalServerCount];//站点主机头

string currentServerBindings;//绑定主机头IP端口字符串

char[] a=":".ToCharArray();

string [] currentBingdings =new string;

int i=0;

foreach (DirectoryEntry child in rootfolder.Children)

{

if (child.SchemaClassName == "IIsWebServer")

{

arrayServerID.SetValue(child.Name.ToString(),i);

arrayServerComment.SetValue(child.Properties["ServerComment"].Value.ToString(),i);

currentServerBindings=child.Properties["ServerBindings"].Value.ToString();

currentBingdings=currentServerBindings.Split(a);

arrayServerIP.SetValue(currentBingdings[0],i);

arrayServerPort.SetValue(currentBingdings,i);

arrayServerHeader.SetValue(currentBingdings,i);

foreach (DirectoryEntry rootChild in child.Children)

{

if((rootChild.SchemaClassName == "IIsWebVirtualDir")(rootChild.Name.ToString()=="root"))

{

if(rootChild.Properties["Path"].Value==null)

{

arrayServerPath.SetValue("",i);

}

else

{

arrayServerPath.SetValue(rootChild.Properties["Path"].Value.ToString(),i);

}

}

}

i+=1;

}

}

//写入到datagrid中去

//循环从数组中读取数据

for(i=0;i

listView1.Items.Add((i+1).ToString());

listView1.Items[i].SubItems.Add(arrayServerID.GetValue(i).ToString());

listView1.Items[i].SubItems.Add(arrayServerComment.GetValue(i).ToString());

listView1.Items[i].SubItems.Add(arrayServerIP.GetValue(i).ToString());

listView1.Items[i].SubItems.Add(arrayServerPort.GetValue(i).ToString());

listView1.Items[i].SubItems.Add(arrayServerHeader.GetValue(i).ToString());

listView1.Items[i].SubItems.Add(arrayServerPath.GetValue(i).ToString());

}