public class SetupUtility
 {
  int siteID;
  DirectoryEntry site;
  DirectoryEntry siteVDir;
 
  public int CreateWebSite(string webSiteName, string pathToRoot, bool createDir)
  {
   DirectoryEntry root = new DirectoryEntry("IIS://192.168.1.99/W3SVC");
   // Find unused ID value for new web siteint 
   siteID = 1;
   foreach(DirectoryEntry e in root.Children)
   {
    if(e.SchemaClassName == "IIsWebServer")
    {
     int ID = Convert.ToInt32(e.Name);
     if(ID >= siteID)
     {
      siteID = ID+1;
     }
    }
   }上边都看明白了,上边是获取ID,在原来的基础上加1
   // Create web siteDirectoryEntry   这是创建站长.还是创建程序池呀
   site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID);
   site.Invoke("Put", "ServerComment", webSiteName);
   site.Invoke("Put", "KeyType", "IIsWebServer");
   site.Invoke("Put", "ServerBindings", ":80:www.163.com");
   site.Invoke("Put", "ServerState", 2);
   site.Invoke("Put", "FrontPageWeb", 1);
   site.Invoke("Put", "DefaultDoc", "Default.aspx");
   site.Invoke("Put", "SecureBindings", ":443:");
   site.Invoke("Put", "ServerAutoStart", 1);
   site.Invoke("Put", "ServerSize", 1);
   
   site.Invoke("SetInfo");  
   // Create application virtual directoryDirectoryEntry   上边不上创建了吗.怎么又要创建了
   siteVDir = site.Children.Add("Root", "IISWebVirtualDir");
   siteVDir.Properties["AppIsolated"][0] = 2;
   siteVDir.Properties["Path"][0] = pathToRoot;
   siteVDir.Properties["AccessFlags"][0] = 513;
   siteVDir.Properties["FrontPageWeb"][0] = 1;
   siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/"+siteID+"/Root";
   siteVDir.Properties["AppFriendlyName"][0] = "Root";
   siteVDir.CommitChanges();
   site.CommitChanges();
   return siteID;
  }
 }
还有不明白的就是 invoke 方法怎么用 
里边的 "put" 及后边的参数
不晓得哪里有invoke方法里边的参数具体说明 msdn 上也没有具体说明.什么参数代表什么