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[].Path;
site.IsApp = true;
site.Children = new List<SiteInfo>();
foreach (var subSite in sites[].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;
}
        public List<KeyValuePair<SiteInfo, string>> getFlatSiteList(List<SiteInfo> sites, string parentPadding = "")
{
var result = new List<KeyValuePair<SiteInfo, string>>();
foreach (var site in sites)
{
var currentPrefix = parentPadding == string.Empty ? string.Empty : "└" + parentPadding;
result.Add(new KeyValuePair<SiteInfo, string>(site, currentPrefix + site.Name));
result.AddRange(getFlatSiteList(site.Children, parentPadding + "--"));
}
return result;
} private void Form1_Load(object sender, EventArgs e)
{
var siteList = getSiteList(new DirectoryEntry("IIS://localhost/w3svc"));
var flatSiteList = getFlatSiteList(siteList);
foreach (var list in flatSiteList)
Debug.Print(list.Value);
}

C#获取IIS所有站点及虚拟目录和应用程序(包含名称及详细信息)的更多相关文章

  1. IIS - 虚拟目录与应用程序的异同

    在Windows 7 IIS7中,对服务器建立站点后,有二种添加子站点的方式 A. 虚拟目录 B. 应用程序   简单总结下二者之间的异同 A.虚拟目录     虚拟目录是指在站点下建立一个虚拟子目录 ...

  2. ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)

    [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...

  3. 导出IIS Log列表,导出站点下虚拟目录列表

    Add-Type -AssemblyName System.Web import-module webadministration $ip = (gwmi Win32_NetworkAdapterCo ...

  4. iis虚拟目录或应用程序不继承父站点的web.config配置信息

    A为主站点 B为A的应用程序站点 再A的web.config中对不想继承的节点用location 套起来.如下: <location path="." allowOverri ...

  5. IIS6中给Framework2,。0站点的虚拟目录(2.0版本)下发布Web API项目(4.0版本)问题处理

    Web-API项目以虚拟目录形式部署到IIS6/IIS7 若原有站点为Framework2.0版本,在此站点(或虚拟目录站点)下,新增API虚拟目录,然后选择Framework4.0版本,IIS6和I ...

  6. C# 获取IIS站点及虚拟目录信息

    using System; using System.DirectoryServices; using System.Collections.Generic; using System.Text; n ...

  7. IIS中ASP.NET虚拟目录不继承主站点web.config设置的办法(转载)

    ASP.NET提供了强大的Web.config来配置网站,一般来说一个网站只有一个根目录下的Web.config文件,有时候我们希望子目录有着不同的权限或者参数设置,则可以在相应子目录增加一个Web. ...

  8. [php]修改站点的虚拟目录

    wamp默认的站点的目录是www的目录,可以修改appache的httpd.conf文件来修改目录,修改方法如下: 1. <Directory "D:/SoftWare/wamp/ww ...

  9. 创建虚拟目录失败,必须为服务器名称指定“localhost”?看进来!!

    没废话,直接讲! 关于微信开发过程,远程调试后,再次打开vs出现项目加载失败的解决办法! 上图: 这图应该不陌生,你肯定打开iis把绑定的域名给干掉了.这个提示很坑人,简直就是坑爹!!!fck!! 来 ...

随机推荐

  1. mysql插入中文乱码

    https://www.cnblogs.com/zhchoutai/p/7364835.html 最简单的一招,不用修改my.ini文件: 1.停掉mysql服务 2.启动:X:\%path%\MyS ...

  2. OOP⑺

    1.多态和instanceof 都是去买东西,但是根据我们给别人金额的不同,得到不同的结果!!!! 生活中的多态! 操作是否一致? 一致! 都是买东西! 什么不一样?? 01.消费金额不一样 02.因 ...

  3. 【原创】QT 打印输出

    list类 qDebug 的两种用法 #include <QDebug> int main(int argc,char *argv[]) { QList<int> list; ...

  4. Django 数据库连接配置(Oracle、Mysql)

    一.Django Oracle连接配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracle', 'NAME': 'DEMO' ...

  5. swiftlint swift代码规范检查神器

    一大堆的你为什么要用swiftlint,你为什么要codereview,swiftlint到底在做什么,就不多说了,没意义,他就是帮助你写出规范漂亮代码的神器! 安装 官方提供了三种安装的方式 hom ...

  6. 协程(Coroutine)与多线程,多进程

    执行多个任务可以使用多线程或多进程. 多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响 多线程中,所有变量都由所有线程共享.而线程间的切换是系统进行调度,无法控制,所以可能 一个进程中的 ...

  7. 1.Python爬虫入门一之综述

    要学习Python爬虫,我们要学习的共有以下几点: Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy Python爬虫 ...

  8. IDEA激活

    https://blog.csdn.net/qq_34273222/article/details/78810799 目测这个服务器可用:http://idea.iteblog.com/key.php

  9. 启发式搜索A-Star算法 【寻找 最短路径 算法】【地理几何位置 可利用的情况】

    在处理最短路径问题时,有一种启发式算法是我们应该了解的,由于其有着优秀的探索效率在各自现实项目中多有应用,它就是 A-star 算法,或  A*  算法. 个人观点: A*  算法并不保证找到的路径一 ...

  10. Android全局可调试(ro.debuggable = 1)的一种另类改法

    网上流传比较多的,是重打包boot.img.读aosp的init进程源码,发现通过patch init进程也可以实现相同目的. 首先看一下init进程对ro只读属性的检查: /* property_s ...