1. 程式人生 > >C#獲取IIS所有站點及虛擬目錄和應用程序(包含名稱及詳細信息)

C#獲取IIS所有站點及虛擬目錄和應用程序(包含名稱及詳細信息)

local ren localhost rem ace rms 獲取 set 目錄

原文出處:傳送門

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.DirectoryServices;
using System.Diagnostics;

namespace WindowsFormsApplication13
{
    public
partial class Form1 : Form { public Form1() { InitializeComponent(); } void ShowEntry(DirectoryEntry entry) { foreach (DirectoryEntry childEntry in entry.Children) { if (childEntry.SchemaClassName == "IIsWebServer
") { Debug.Print(childEntry.SchemaClassName + "" + childEntry.Properties["ServerComment"].Value.ToString()); Debug.Print("*********************Start*************************"); foreach (var name in childEntry.Properties.PropertyNames) { Debug.Print(name
+ ":" + childEntry.Properties[name.ToString()].Value); } Debug.Print("*********************End*************************"); } else if (childEntry.SchemaClassName == "IIsWebVirtualDir") { Debug.Print(childEntry.SchemaClassName + "" + childEntry.Name); Debug.Print("*********************Start*************************"); foreach (var name in childEntry.Properties.PropertyNames) { Debug.Print(name + ":" + childEntry.Properties[name.ToString()].Value); } Debug.Print("*********************End*************************"); } else { //Debug.Print(childEntry.SchemaClassName); } ShowEntry(childEntry); } } private void Form1_Load(object sender, EventArgs e) { ShowEntry(new DirectoryEntry("IIS://localhost/w3svc")); } } }

獲取IIS樹型目錄:

public class SiteInfo
        {
            public string Name { get; set; }
            public string Path { get; set; }
            public bool IsApp { get; set; }
            public List<SiteInfo> Children { get; set; }
        }

        List<SiteInfo> getSiteList(DirectoryEntry entry)
        {
            var result = new List<SiteInfo>();
            foreach (DirectoryEntry childEntry in entry.Children)
            {
                var sites = getSiteList(childEntry);
                if (childEntry.SchemaClassName == "IIsWebServer")
                {
                    var site = new SiteInfo();
                    site.Name = childEntry.Properties["ServerComment"].Value.ToString();
                    site.Path = sites[0].Path;
                    site.IsApp = true;
                    site.Children = new List<SiteInfo>();
                    foreach (var subSite in sites[0].Children)
                        site.Children.Add(subSite);
                    result.Add(site);
                }
                else if (childEntry.SchemaClassName == "IIsWebVirtualDir")
                {
                    var site = new SiteInfo();
                    site.Name = childEntry.Name;
                    site.Path = childEntry.Properties["Path"].Value.ToString();
                    site.Children = sites;
                    if (childEntry.Properties.Contains("AppRoot")
                        && childEntry.Properties["AppRoot"].Value != null
                        && !string.IsNullOrEmpty(childEntry.Properties["AppRoot"].Value.ToString()))
                        site.IsApp = true;
                    result.Add(site);
                }
            }
            return result;
        }

C#獲取IIS所有站點及虛擬目錄和應用程序(包含名稱及詳細信息)