• Creat website



            {
                //站点名称和物理路径
                String webSiteName = "wang";
                String pathToRoot = @"c:\wang";
                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;

                ServiceController mobServiceController4 = new System.ServiceProcess.ServiceController();
                mobServiceController4.ServiceName = "MSFtpsvc";

                if (mobServiceController4.Status == ServiceControllerStatus.Stopped)
                {
                    try
                    {
                        mobServiceController4.Start();
                        mobServiceController4.WaitForStatus(ServiceControllerStatus.Running);
                        MessageBox.Show("已经启动Internet信息服务默认FTP站点。", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }

                label1.Text = "恭喜你,全部工作完成!";
                MessageBox.Show("恭喜你,全部工作完成!");

            }

  • 相关阅读:
    教你当主管:如何降低你的员工流失率?
    你问我这算什么
    推荐:职场提升的10条捷径
    压力从何而来呢?千万不要2008年结婚
    怎样“管理”你的上司?
    HTTP.sys
    IIS书籍
    IIS目录
    HTTP服务
    在 IIS 7 中使用配置文件
  • 原文地址:https://www.cnblogs.com/greencolor/p/1788192.html
Copyright © 2020-2023  润新知