C#获取IIS所有站点及虚拟目录和应用程序(包含名称及详细信息)
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所有站点及虚拟目录和应用程序(包含名称及详细信息)的更多相关文章
- IIS - 虚拟目录与应用程序的异同
在Windows 7 IIS7中,对服务器建立站点后,有二种添加子站点的方式 A. 虚拟目录 B. 应用程序 简单总结下二者之间的异同 A.虚拟目录 虚拟目录是指在站点下建立一个虚拟子目录 ...
- ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)
[原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...
- 导出IIS Log列表,导出站点下虚拟目录列表
Add-Type -AssemblyName System.Web import-module webadministration $ip = (gwmi Win32_NetworkAdapterCo ...
- iis虚拟目录或应用程序不继承父站点的web.config配置信息
A为主站点 B为A的应用程序站点 再A的web.config中对不想继承的节点用location 套起来.如下: <location path="." allowOverri ...
- IIS6中给Framework2,。0站点的虚拟目录(2.0版本)下发布Web API项目(4.0版本)问题处理
Web-API项目以虚拟目录形式部署到IIS6/IIS7 若原有站点为Framework2.0版本,在此站点(或虚拟目录站点)下,新增API虚拟目录,然后选择Framework4.0版本,IIS6和I ...
- C# 获取IIS站点及虚拟目录信息
using System; using System.DirectoryServices; using System.Collections.Generic; using System.Text; n ...
- IIS中ASP.NET虚拟目录不继承主站点web.config设置的办法(转载)
ASP.NET提供了强大的Web.config来配置网站,一般来说一个网站只有一个根目录下的Web.config文件,有时候我们希望子目录有着不同的权限或者参数设置,则可以在相应子目录增加一个Web. ...
- [php]修改站点的虚拟目录
wamp默认的站点的目录是www的目录,可以修改appache的httpd.conf文件来修改目录,修改方法如下: 1. <Directory "D:/SoftWare/wamp/ww ...
- 创建虚拟目录失败,必须为服务器名称指定“localhost”?看进来!!
没废话,直接讲! 关于微信开发过程,远程调试后,再次打开vs出现项目加载失败的解决办法! 上图: 这图应该不陌生,你肯定打开iis把绑定的域名给干掉了.这个提示很坑人,简直就是坑爹!!!fck!! 来 ...
随机推荐
- mysql插入中文乱码
https://www.cnblogs.com/zhchoutai/p/7364835.html 最简单的一招,不用修改my.ini文件: 1.停掉mysql服务 2.启动:X:\%path%\MyS ...
- OOP⑺
1.多态和instanceof 都是去买东西,但是根据我们给别人金额的不同,得到不同的结果!!!! 生活中的多态! 操作是否一致? 一致! 都是买东西! 什么不一样?? 01.消费金额不一样 02.因 ...
- 【原创】QT 打印输出
list类 qDebug 的两种用法 #include <QDebug> int main(int argc,char *argv[]) { QList<int> list; ...
- Django 数据库连接配置(Oracle、Mysql)
一.Django Oracle连接配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracle', 'NAME': 'DEMO' ...
- swiftlint swift代码规范检查神器
一大堆的你为什么要用swiftlint,你为什么要codereview,swiftlint到底在做什么,就不多说了,没意义,他就是帮助你写出规范漂亮代码的神器! 安装 官方提供了三种安装的方式 hom ...
- 协程(Coroutine)与多线程,多进程
执行多个任务可以使用多线程或多进程. 多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响 多线程中,所有变量都由所有线程共享.而线程间的切换是系统进行调度,无法控制,所以可能 一个进程中的 ...
- 1.Python爬虫入门一之综述
要学习Python爬虫,我们要学习的共有以下几点: Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy Python爬虫 ...
- IDEA激活
https://blog.csdn.net/qq_34273222/article/details/78810799 目测这个服务器可用:http://idea.iteblog.com/key.php
- 启发式搜索A-Star算法 【寻找 最短路径 算法】【地理几何位置 可利用的情况】
在处理最短路径问题时,有一种启发式算法是我们应该了解的,由于其有着优秀的探索效率在各自现实项目中多有应用,它就是 A-star 算法,或 A* 算法. 个人观点: A* 算法并不保证找到的路径一 ...
- Android全局可调试(ro.debuggable = 1)的一种另类改法
网上流传比较多的,是重打包boot.img.读aosp的init进程源码,发现通过patch init进程也可以实现相同目的. 首先看一下init进程对ro只读属性的检查: /* property_s ...