zoukankan      html  css  js  c++  java
  • 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[2]; 
    
       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[1],i);
         arrayServerHeader.SetValue(currentBingdings[2],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<TotalServerCount;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());
        
      
       } 
    public class IISManager
        {
            string strServer = "localhost";
            string strWebSiteID = "1";
            string strWebSiteName = string.Empty;
            string strVirtualPath = string.Empty;
            
            public string Server
            {
                get { return strServer; }
                set { strServer = value; }
            }
            public string WebSiteID
            {
                get { return strWebSiteID; }
                set { strWebSiteID = value; }
            }
            public string WebSiteName
            {
                get { return strWebSiteName; }
                set { strWebSiteName = value; }
            }
            public string VirtualPath
            {
                get { return strVirtualPath; }
                set { strVirtualPath = value; }
            }
    
            public IISManager()
            {
            }
    
            public IISManager(string strS, string strW)
            {
                strServer = strS;
                strWebSiteID = strW;
            }
    
            public string GetConfigAllFilePath()
            {
                DirectoryEntry rootEntry = new DirectoryEntry("IIS://" + strServer + "/w3svc/" + strWebSiteID + "/root");
    
                string strTempPath = string.Empty;
                foreach (DirectoryEntry de in rootEntry.Children)
                {
                    if (de.Name == "kintera_com")
                    {
                        strTempPath = de.Properties["path"][0].ToString();
                        break;
                    }
                }
                strTempPath = strTempPath.Substring(0, strTempPath.Length - 12);
                return strTempPath + @"CommonLibincludesINC_config_all.asp";
            }
    
            public void CreateWebSite()
            {
                DirectoryEntry root = new DirectoryEntry("IIS://" + this.Server + "/W3SVC");
    
                if (!EnsureNewSiteAvaible(this.Server))
                {
                    throw(new Exception("The Web Site existed!"));
                }
                else
                {
                    DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", this.WebSiteID);
    
                    site.Invoke("Put", "ServerComment", this.WebSiteName);
                    site.Invoke("Put", "KeyType", "IIsWebServer");
                    site.Invoke("Put", "ServerBindings", this.Server);
                    site.Invoke("Put", "ServerState", 2);
                    site.Invoke("Put", "FrontPageWeb", 1);
                    site.Invoke("Put", "DefaultDoc", "index.aspx,index.html,index.html,default.aspx,default.htm,default.html");
                    site.Invoke("Put", "ServerAutoStart", 1);
                    site.Invoke("Put", "ServerSize", 1);
                    site.Invoke("SetInfo");
                }
            }
    
            public void CreateVirtualFolder()
            {
                DirectoryEntry site = new DirectoryEntry("IIS://" + this.Server + "/W3SVC" + this.WebSiteID + "/root");
    
                DirectoryEntry siteVDir = site.Children.Add("Root", "IISWebVirtualDir");
    
                siteVDir.Properties["AppIsolated"][0] = 2;
    
                siteVDir.Properties["Path"][0] = this.VirtualPath;
    
                siteVDir.Properties["AccessFlags"][0] = 513;
    
                siteVDir.Properties["FrontPageWeb"][0] = 1;
    
                siteVDir.Properties["AppRoot"][0] = "/W3SVC/" + this.WebSiteID + "/Root";
    
                siteVDir.Properties["AppFriendlyName"][0] = "ROOT";
    
                siteVDir.CommitChanges();
    
                site.CommitChanges();
            }
    
            public bool EnsureNewSiteAvaible(string bindStr)
            {
                string strDePath = String.Format("IIS://{0}/w3svc", this.Server);
    
                DirectoryEntry de = new DirectoryEntry(strDePath);
                foreach (DirectoryEntry child in de.Children)
                {
                    if (child.SchemaClassName == "IIsWebServer")
                    {
                        if (child.Properties["ServerBindings"].Value != null)
                        {
                            if (child.Properties["ServerBindings"].Value.ToString() == bindStr)
                            {
                                return false;
                            }
                        }
                    }
                }
                return true;
            }
    
            public void DeleteWebSiteByName(string siteName)
            {
                string siteNum = GetWebSiteNum(siteName);
    
                string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", this.Server, siteNum);
    
                DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);
    
                string rootPath = String.Format("IIS://{0}/w3svc", this.Server);
    
                DirectoryEntry rootEntry = new DirectoryEntry(rootPath);
    
                rootEntry.Children.Remove(siteEntry);
    
                rootEntry.CommitChanges();
            }
    
            public void DeleteWebSiteByName()
            {
                string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", this.Server,this.WebSiteID);
    
                DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);
    
                string rootPath = String.Format("IIS://{0}/w3svc", this.Server);
    
                DirectoryEntry rootEntry = new DirectoryEntry(rootPath);
    
                rootEntry.Children.Remove(siteEntry);
    
                rootEntry.CommitChanges();
            }
    
            public void StartWebSite(string siteName)
            {
                string siteNum = GetWebSiteNum(siteName);
    
                string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", this.Server, siteNum);
    
                DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);
    
                siteEntry.Invoke("Start", new object[] { });
            }
    
            public void StartWebSite()
            {
                string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", this.Server,this.WebSiteID);
    
                DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);
    
                siteEntry.Invoke("Start", new object[] { });
            }
    
            public void StopWebSite(string siteName)
            {
                string siteNum = GetWebSiteNum(siteName);
    
                string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", this.Server, siteNum);
    
                DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);
    
                siteEntry.Invoke("Stop", new object[] { });
            }
    
            public void StopWebSite()
            {
                string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", this.Server, this.WebSiteID);
    
                DirectoryEntry siteEntry = new DirectoryEntry(siteEntPath);
    
                siteEntry.Invoke("Stop", new object[] { });
            }
    
            public string GetWebSiteNum(string siteName)
            {
                Regex regex = new Regex(siteName);
                string tmpStr;
                string rootPath = String.Format("IIS://{0}/w3svc", this.Server);
    
                DirectoryEntry deEntry = new DirectoryEntry(rootPath);
    
                foreach (DirectoryEntry child in deEntry.Children)
                {
                    if (child.SchemaClassName == "IIsWebServer")
                    {
                        if (child.Properties["ServerBindings"].Value != null)
                        {
                            tmpStr = child.Properties["ServerBindings"].Value.ToString();
    
                            if (regex.Match(tmpStr).Success)
                            {
                                return child.Name;
                            }
                        }
    
                        if (child.Properties["ServerComment"].Value != null)
                        {
                            tmpStr = child.Properties["ServerComment"].Value.ToString();
    
                            if (regex.Match(tmpStr).Success)
                            {
                                return child.Name;
                            }
                        }
                    }
                }
                return "No WebSite";
            }
    
            public void ResetIIS()
            {
                Process.Start("iisreset");
            }
    
            public void StopIIS()
            {
                ServiceController sc = new ServiceController("iisadmin");
                if (sc.Status == ServiceControllerStatus.Running)
                {
                    sc.Stop();
                }
                //Process.Start("cmd.exe", "/start iisreset");
            }
    
            public void StartIIS()
            {
                ServiceController sc = new ServiceController("iisadmin");
                sc.Start();
            }
        } 
    public List<string> EnumWebSite()
      {
      string strDePath = String.Format("IIS://{0}/w3svc", this.Server);
      DirectoryEntry de = new DirectoryEntry(strDePath);
      List<string> list=new List<string>();
      foreach (DirectoryEntry child in de.Children)
      {
      if (child.SchemaClassName == "IIsWebServer")
      {
      list.Add(child.Properties["ServerComment"].Value.ToString());
      }
      }
      } 
                // C# 获取网站的 IIS 站点名称 ,获取站点当前连接数
                string siteName = System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName();
                System.Management.ManagementObject o = new System.Management.ManagementObject("Win32_PerfFormattedData_W3SVC_WebService.Name=siteName");
                Response.Write(o.Properties["CurrentConnections"].Value.ToString());
    <p>服务器IP:<%=Request.ServerVariables["LOCAL_ADDR"]%></p>
    <p>服务器名:<%=Request.ServerVariables["SERVER_NAME"]%></p>
    <p> HTTP端口:<%=Request.ServerVariables["SERVER_PORT"]%></p>
    <p> 服务器时间:<%=DateTime .Now%></p>
    <p> 操作系统信息:<%=Request.ServerVariables["HTTP_USER_AGENT"]%></p>
    <p> 允许文件:<%=Request.ServerVariables["HTTP_ACCEPT"]%></p>
    <p> 虚拟目录:<%=HttpContext.Current.Request.ApplicationPath%></p>
    <p> 物理路径:<%=HttpRuntime.AppDomainAppPath%></p>
    <p> 探针文件路径:<%=Context.Server.MapPath(Request.ServerVariables["SCRIPT_NAME"])%></p>
    <p> 脚本超时时间:<%=Server.ScriptTimeout%>(秒)</p>
    <p> CPU个数: <%=Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS")%></p>
    
    String serverOS = Environment.OSVersion.ToString();
    String CpuSum = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");// CPU个数:
    String CpuType = Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");// CPU类型:
    String ServerSoft = Request.ServerVariables["SERVER_SOFTWARE"]; // 信息服务软件:
    String MachineName = Server.MachineName;// 服务器名
    String ServerName = Request.ServerVariables["SERVER_NAME"];// 服务器域名
    String ServerPath = Request.ServerVariables["APPL_PHYSICAL_PATH"];// 虚拟服务绝对路径
    String ServerNet = ".NET CLR " + Environment.Version.ToString(); // DotNET 版本
    String ServerArea = (DateTime.Now - DateTime.UtcNow).TotalHours > 0 ? "+" + (DateTime.Now -DateTime.UtcNow).TotalHours.ToString() : (DateTime.Now - DateTime.UtcNow).TotalHours.ToString();// 服务器时区
    String ServerTimeOut = Server.ScriptTimeout.ToString(); // 脚本超时时间
    String ServerStart = ((Double)System.Environment.TickCount / 3600000).ToString("N2");// 开机运行时长
    // AspNet CPU时间
    String ServerSessions = Session.Contents.Count.ToString();// Session总数
    String ServerApp = Application.Contents.Count.ToString(); // Application总数
    String ServerCache = Cache.Count.ToString(); //应用程序缓存总数
    // 应用程序占用内存
    // String ServerFso = Check("Scripting.FileSystemObject"); // FSO 文本文件读写
    String ServerTimeOut = Server.ScriptTimeout.ToString() + "毫秒"; // 本页执行时间
    
    HTTP_USER_AGENT 获得用户使用的浏览器类型和版本
    
    REMOTE_ADDR 获取用户的IP地址
    
    REQUEST_METHOD 获取请求的方法
    
    LOCAL_ADDR 获取服务器IP地址
    
    SERVER_NAME 获取服务器主机名
    
    PATH_INFO 获取当前执行程序的虚拟路径
    
    PATH_TRANSLATED 获取当前执行程序的绝对路径
    
    CONTENT_LENGTH 获取请求程序所发送内容的字符总数
    
    CONTENT_TYPE 获取请求的信息类型
    
    GATEWAY_INTERFACE 获取网关接口
    
    QUERY_STRING 获取URL的附加信息
    
    SCRIPT_NAME 获取当前程序的文件名(包含虚拟路径)
    
    SERVER_PORT 获取服务器接受请求的端口
    
    SERVER_PROTOCOL 获取服务器遵从的协议以及版本号
    
    HTTP_ACCEPT_LANGUAGE 获取用户所使用的语言
    
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    
    public partial class AdminLogin_Default : System.Web.UI.Page
    {
    #region 必需的设计器变量
    protected string MemberName, AdminLevel;
    protected string ServerOS, CpuSum, CpuType, ServerSoft, MachineName, ServerName, ServerPath, ServerNet, ServerArea, ServerTimeOut, ServerStart;
    protected string PrStart, AspNetN, AspNetCpu, ServerSessions, ServerApp, ServerCache, ServerAppN, ServerFso, RunTime;
    #endregion
    
    protected void Page_Load(object sender, EventArgs e)
    {
    DataLoad();
    }
    
    #region 获取服务器及用户信息
    private void DataLoad()
    {
    DateTime sTime = DateTime.Now;
    
    ServerOS = Environment.OSVersion.ToString(); //操作系统:
    CpuSum = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS"); //CPU个数:
    CpuType = Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER"); //CPU类型:
    ServerSoft = Request.ServerVariables["SERVER_SOFTWARE"]; //信息服务软件:
    MachineName = Server.MachineName; //服务器名
    ServerName = Request.ServerVariables["SERVER_NAME"]; //服务器域名
    ServerPath = Request.ServerVariables["APPL_PHYSICAL_PATH"]; //虚拟服务绝对路径
    ServerNet = ".NET CLR " + Environment.Version.ToString(); //DotNET 版本
    ServerArea = (DateTime.Now - DateTime.UtcNow).TotalHours > 0 ? "+" + (DateTime.Now - DateTime.UtcNow).TotalHours.ToString() : (DateTime.Now - DateTime.UtcNow).TotalHours.ToString(); //服务器时区
    ServerTimeOut = Server.ScriptTimeout.ToString(); //脚本超时时间
    ServerStart = ((Double)System.Environment.TickCount / 3600000).ToString("N2"); //开机运行时长
    PrStart = GetPrStart(); //进程开始时间
    AspNetN = GetAspNetN(); //AspNet 内存占用
    AspNetCpu = GetAspNetCpu(); //AspNet CPU时间
    ServerSessions = Session.Contents.Count.ToString(); //Session总数
    ServerApp = Application.Contents.Count.ToString(); //Application总数
    ServerCache = Cache.Count.ToString(); //应用程序缓存总数
    ServerAppN = GetServerAppN(); //应用程序占用内存
    ServerFso = Check("Scripting.FileSystemObject"); //FSO 文本文件读写
    ServerTimeOut = Server.ScriptTimeout.ToString() + "毫秒"; //本页执行时间
    if (ServerSoft == "")
    {
    ServerSoft = "";
    }
    
    #region 页面初始化必需的内容
    Header.Title = "沉紫龙" + " - 系统管理";
    //HeaderTextInfo.Initialization();
    //HeaderTextInfo.GetAdminHeader(this, null);
    #endregion
    
    #region WebControls Config
    // ViewState Config
    this.EnableViewState = false;
    #endregion
    
    //执行时间
    DateTime eTime = DateTime.Now;
    RunTime = ((eTime - sTime).TotalMilliseconds).ToString();
    }
    #endregion
    
    #region 获取服务器系统信息
    private string GetServerAppN()
    {
    string temp;
    try
    {
    temp = ((Double)GC.GetTotalMemory(false) / 1048576).ToString("N2") + "M";
    }
    catch
    {
    temp = "未知";
    }
    return temp;
    }
    
    private string GetAspNetN()
    {
    string temp;
    try
    {
    temp = ((Double)System.Diagnostics.Process.GetCurrentProcess().WorkingSet64 / 1048576).ToString("N2") + "M";
    }
    catch
    {
    temp = "未知";
    }
    return temp;
    }
    
    private string GetAspNetCpu()
    {
    string temp;
    try
    {
    temp = ((TimeSpan)System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime).TotalSeconds.ToString("N0");
    }
    catch
    {
    temp = "未知";
    }
    return temp;
    }
    
    private string GetPrStart()
    {
    string temp;
    try
    {
    temp = System.Diagnostics.Process.GetCurrentProcess().StartTime.ToString();
    }
    catch
    {
    temp = "未知";
    }
    return temp;
    }
    
    private string Check(string obj)
    {
    try
    {
    object claobj = Server.CreateObject(obj);
    return "支持";
    }
    catch
    {
    return "不支持";
    }
    }
    #endregion
    }
  • 相关阅读:
    [无聊测试赛] T12 道路
    [无聊测试赛] T9 矩阵覆盖
    [无聊测试赛] T10 所驼门王的宝藏
    [无聊测试赛] T8 佳佳的魔法药水
    [无聊测试赛] T7 豪华游轮
    [无聊测试赛] T6 排行榜
    【模板】三分求函数极值
    树的重心模板
    倍增最近公共祖先(LCA)
    ccf201612题解
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/7435731.html
Copyright © 2011-2022 走看看