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. bzoj1968

    题解: 显然每一个数对答案的贡献为n/i 代码: #include<bits/stdc++.h> using namespace std; int n; int main() { scan ...

  2. Date与时间戳的相互转换(Java)

      1.Date对象转换为时间戳 Date date = new Date(); long times = date.getTime(); System.out.println(times); 效果如 ...

  3. 输入系统:epoll & inotify

    一.epoll 作用:检测一个或多个文件的可读.可写等属性变化: 代码示例: #include <sys/epoll.h> #include <stdio.h> #includ ...

  4. 5.4 C++重载输入与输出操作符

    参考:http://www.weixueyuan.net/view/6382.html 总结: 在C++中,系统已经对左移操作符“<<”和右移操作符“>>”分别进行了重载,使其 ...

  5. 第三节 java 函数

    1.函数的定义 1.方法就是一段可重复调用的代码段 2.方法的格式1: 访问修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数2){ //权限访问修饰符 : public protected ...

  6. DevExpress WinForms使用教程:Data Grid - Find Panel模式

    [DevExpress WinForms v18.2下载] DevExpress WinForms用户都熟知,Data Grid是整个产品线的主要产品.在v18.2中添加了一些新的功能,例如之前教程中 ...

  7. Gym - 100971J (思维+简单bfs)

    题目链接:http://codeforces.com/gym/100971/problem/J J. Robots at Warehouse time limit per test 2.0 s mem ...

  8. day 53 练习

    1  <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...

  9. Englis(二)

    turn a year older  年长一岁 the birthday person 过生日的人 in honor of 为庆祝,为纪念 to observe/celebrate birthday  ...

  10. CPU对指令长度的判断

    译码一般包括:指令预取.指令预分析.解码.预取就是从cache或者内存取一系列的字节(大小可以保证至少包含一条指令),并设置一个待分析的位置,预分析从此位置逐字节分析,如果是前缀就设置分析状态(因为前 ...