利用C#创建 IIS 站点并设置.NET Framework版本为ASP.NET 2.0 的方法

/// <summary>
/// 本方法创建一个站点(当然,创建虚拟目录也完全没有任何问题,做法类似),并设置IIS中ASP.NET版本为2.0
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
     //站点名称和物理路径
     String webSiteName = "mengxianhui";
     String pathToRoot = @"c:/mengxianhui";
     DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");// Find unused ID value for new web site
     int siteID = 1;
     //得到现有的站点标识
     foreach (DirectoryEntry entry in root.Children)
     {
         if (entry.SchemaClassName == "IIsWebServer")
         {                    
             int ID = Convert.ToInt32(entry.Name);

             if (ID >= siteID)
             {
                 siteID = ID + 1;
             }
        }
     }

     //利用配置文件的做法创建站点,需要先停止原来的服务,以便能够顺利写入数据
     label1.Text = "正在停止服务……";
     Application.DoEvents();
     System.ServiceProcess.ServiceController mobServiceController3 = new System.ServiceProcess.ServiceController("IISAdmin");
     foreach (System.ServiceProcess.ServiceController dependentService in mobServiceController3.DependentServices)
     {
         switch (dependentService.Status)
         {
             case ServiceControllerStatus.Stopped:
                 break;

             case ServiceControllerStatus.StopPending:
                 dependentService.WaitForStatus(ServiceControllerStatus.Stopped);
                 break;

             default:
                 dependentService.Stop();
                 dependentService.WaitForStatus(ServiceControllerStatus.Stopped);
                 break;
         }

     }
     if (mobServiceController3.Status != ServiceControllerStatus.Stopped)
     {
         mobServiceController3.Stop();
         mobServiceController3.WaitForStatus(ServiceControllerStatus.Stopped);
     }
     //确保服务完全停止
     label1.Text = "停止服务完成!";
     Application.DoEvents();
     String ConfigPath = System.Environment.SystemDirectory + @"/inetsrv/MetaBase.xml";
     System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
     doc.Load(ConfigPath);

     System.Xml.XmlNamespaceManager xnm = new System.Xml.XmlNamespaceManager(doc.NameTable);
     xnm.AddNamespace("mxh", "urn:microsoft-catalog:XML_Metabase_V64_0");

     //得到最大的网站的标识,要在其后面加入节点
     string SiteLocation = "/LM/W3SVC/" + (siteID - 1);
     System.Xml.XmlNode LastWebServer = doc.SelectSingleNode("/mxh:configuration/mxh:MBProperty/mxh:IIsWebVirtualDir[@Location='" + SiteLocation + "/root']", xnm);
     if (LastWebServer == null)
     {
         MessageBox.Show("没有现有的 Web 服务器。");
         doc = null;
         return;
     }

     //找到AdminACL设置,每次都是变化的 -_-!
     System.Xml.XmlNode LastWebServerFilter = doc.SelectSingleNode("/mxh:configuration/mxh:MBProperty/mxh:IIsFilters[@Location='" + SiteLocation + "/filters']/@AdminACL", xnm);
     if (LastWebServer == null)
     {
         MessageBox.Show("没有现有的 Web 服务器 filters。");
         doc = null;
         return;
     }

     String LastWebServerFilterAdminAcl = LastWebServerFilter.Value;
   
     //创建新站点
     label1.Text = "创建新站点……";
     Application.DoEvents();
     String NewSiteID = "/LM/W3SVC/" + siteID.ToString();
     System.Xml.XmlNode NewWebServer = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsWebServer", "urn:microsoft-catalog:XML_Metabase_V64_0");
     System.Xml.XmlAttribute NewWebServerLocation = doc.CreateAttribute("Location");
     NewWebServerLocation.Value = NewSiteID;
     NewWebServer.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("AuthFlags");
     NewWebServerLocation.Value = "0";
     NewWebServer.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("ServerAutoStart");
     NewWebServerLocation.Value = "TRUE";
     NewWebServer.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("ServerBindings");
     NewWebServerLocation.Value = ":802:";
     NewWebServer.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("ServerComment");
     NewWebServerLocation.Value = webSiteName;
     NewWebServer.Attributes.Append(NewWebServerLocation);
     LastWebServer.ParentNode.InsertAfter(NewWebServer, LastWebServer);

     System.Xml.XmlNode NewWebServerFilter = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsFilters", "urn:microsoft-catalog:XML_Metabase_V64_0");
     NewWebServerLocation = doc.CreateAttribute("Location");
     NewWebServerLocation.Value = NewSiteID + "/filters";
     NewWebServerFilter.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("AdminACL");
     NewWebServerLocation.Value = LastWebServerFilterAdminAcl;
     NewWebServerFilter.Attributes.Append(NewWebServerLocation);

     NewWebServer.ParentNode.InsertAfter(NewWebServerFilter, NewWebServer);            

     System.Xml.XmlNode IIsWebVirtualDir = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsWebVirtualDir", "urn:microsoft-catalog:XML_Metabase_V64_0");
     NewWebServerLocation = doc.CreateAttribute("Location");
     NewWebServerLocation.Value = NewSiteID + "/root";
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("AccessFlags");
     NewWebServerLocation.Value = "AccessRead | AccessScript";
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("AppFriendlyName");
     NewWebServerLocation.Value = "默认应用程序";
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("AppIsolated");
     NewWebServerLocation.Value = "2";
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("AppRoot");
     NewWebServerLocation.Value = NewSiteID + "/Root";
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("AuthFlags");
     NewWebServerLocation.Value = "AuthAnonymous | AuthNTLM";
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     //关于权限,可以任意组合
     NewWebServerLocation = doc.CreateAttribute("DirBrowseFlags");
     NewWebServerLocation.Value = "DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate | EnableDefaultDoc";
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     NewWebServerLocation = doc.CreateAttribute("Path");
     NewWebServerLocation.Value = pathToRoot;
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     //为安全起见,下面的系统文件夹需要使用程序的方法获取,如System.Environment.SystemDirectory,和System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
     //这里为了简单期间,直接写入
     string ScriptMaps = @".asp,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
                 .cer,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
                 .cdx,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
                 .asa,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
                 .idc,C:/WINDOWS/system32/inetsrv/httpodbc.dll,5,GET,POST
                 .shtm,C:/WINDOWS/system32/inetsrv/ssinc.dll,5,GET,POST
                 .shtml,C:/WINDOWS/system32/inetsrv/ssinc.dll,5,GET,POST
                 .stm,C:/WINDOWS/system32/inetsrv/ssinc.dll,5,GET,POST
                 .asax,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .ascx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .ashx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .asmx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .aspx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .axd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .vsdisco,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .rem,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .soap,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .config,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .cs,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .csproj,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .vb,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .vbproj,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .webinfo,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .licx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .resx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .resources,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .xoml,C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .rules,C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .master,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .skin,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .compiled,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .browser,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .mdb,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .jsl,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .vjsproj,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .sitemap,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .msgx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .ad,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .dd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .ldd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .sd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .cd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .adprototype,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .lddprototype,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .sdm,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .sdmDocument,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .ldb,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .svc,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
                 .mdf,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .ldf,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .java,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .exclude,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
                 .refresh,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG";

     NewWebServerLocation = doc.CreateAttribute("ScriptMaps");
     NewWebServerLocation.Value = ScriptMaps;
     IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

     NewWebServerFilter.ParentNode.InsertAfter(IIsWebVirtualDir, NewWebServerFilter);
     doc.Save(ConfigPath);
     doc = null;

     label1.Text = "创建站点完成!";
     mobServiceController3 = null;
     mobServiceController3 = new System.ServiceProcess.ServiceController("w3svc");
     mobServiceController3.Start();
     mobServiceController3.WaitForStatus(ServiceControllerStatus.Running);
     mobServiceController3 = null;
     label1.Text = "恭喜你,全部工作完成!";
     MessageBox.Show("恭喜你,全部工作完成!");
}

 

利用.NET Framework提供的System.DirectoryServices.DirectoryEntry类可以轻松创建IIS站点,并将站点设置为ASP.NET 2.0版本。无疑,这种方法与前面的那个方法相比较,是比较好的。一下代码需要注意的地方是:
1,没有做路径检查,这个很简单;
2,没有做端口存在的检查,这个也不是很复杂;
3,ScriptMapsList数组是为了简单起见,直接从字符串进行分解出来,这个需要注意你自己的应用;
4;更多IIS权限处理,可根据需要进行添加。
本方法代码如下:
string ScriptMaps =
@".asp,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
         .cer,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
         .cdx,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
         .asa,C:/WINDOWS/system32/inetsrv/asp.dll,5,GET,HEAD,POST,TRACE
         .idc,C:/WINDOWS/system32/inetsrv/httpodbc.dll,5,GET,POST
         .shtm,C:/WINDOWS/system32/inetsrv/ssinc.dll,5,GET,POST
         .shtml,C:/WINDOWS/system32/inetsrv/ssinc.dll,5,GET,POST
         .stm,C:/WINDOWS/system32/inetsrv/ssinc.dll,5,GET,POST
         .asax,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .ascx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .ashx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .asmx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .aspx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .axd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .vsdisco,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .rem,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .soap,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .config,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .cs,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .csproj,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .vb,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .vbproj,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .webinfo,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .licx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .resx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .resources,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .xoml,C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .rules,C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .master,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .skin,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .compiled,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .browser,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .mdb,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .jsl,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .vjsproj,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .sitemap,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .msgx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .ad,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .dd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .ldd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .sd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .cd,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .adprototype,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .lddprototype,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .sdm,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .sdmDocument,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .ldb,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .svc,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
         .mdf,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .ldf,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .java,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .exclude,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
         .refresh,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
";

String[] ScriptMapsList
= System.Text.RegularExpressions.Regex.Split(ScriptMaps, "/r/n");


///注意:这里没有进行进行端口存在的检查
// Access Flags
const
int MD_ACCESS_READ =
0x00000001; //Allow read access.
const
int MD_ACCESS_SCRIPT =
0x00000200; // Allow script execution.

string entPath =
"IIS://localhost/w3svc";
System.DirectoryServices.DirectoryEntry rootEntry
=
new System.DirectoryServices.DirectoryEntry(entPath);
int siteID =
1;
//得到现有的站点标识
foreach (System.DirectoryServices.DirectoryEntry entry in rootEntry.Children)
{
  
if (entry.SchemaClassName ==
"IIsWebServer")
   {
   
int ID = Convert.ToInt32(entry.Name);

   
if (ID >= siteID)
     {
       siteID
= ID +
1;
     }
   }
}

System.DirectoryServices.DirectoryEntry newSiteEntry
= rootEntry.Children.Add(siteID.ToString(), "IIsWebServer");
newSiteEntry.Properties[
"ServerBindings"].Value =
":8001:";
newSiteEntry.Properties[
"ServerComment"].Value =
"mengxianhui2";
newSiteEntry.CommitChanges();
System.DirectoryServices.DirectoryEntry vDirEntry
= newSiteEntry.Children.Add("root", "IIsWebVirtualDir");
vDirEntry.Properties[
"Path"].Value =
@"C:/mengxianhui";
//System.Collections.ArrayList ScriptMapsList = new System.Collections.ArrayList();
//ScriptMapsList.Add(@".aspx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".asax,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".svc,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".msgx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".config,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
//ScriptMapsList.Add(@".ascx,c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG");
vDirEntry.Properties["ScriptMaps"].Value = ScriptMapsList;
vDirEntry.Properties[
"AppFriendlyName"][0] =
"孟宪会的网站";
vDirEntry.Properties[
"AppIsolated"][0] =
2;
vDirEntry.Properties[
"AccessFlags"][0] = MD_ACCESS_READ | MD_ACCESS_SCRIPT;
vDirEntry.Properties[
"AppRoot"][0] =
"LM/W3SVC/"
+ siteID +
"/Root";
vDirEntry.CommitChanges();
newSiteEntry.CommitChanges();
MessageBox.Show(
"创建完成!");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值