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!! 来 ...
随机推荐
- LeetCode 回溯法 别人的小结 八皇后 递归
#include <iostream> #include <algorithm> #include <iterator> #include <vector&g ...
- DBProxy 项目全解
转载自:https://github.com/Meituan-Dianping/DBProxy/blob/master/doc/USER_GUIDE.md#2 1 总体信息 1.1 关于 ...
- Array和ArrayList有什么区别?
Array和ArrayList的区别: 1.Array可以包含基本数据类型和对象类型,而ArrayList只能包含对象类型 2.Array有固定的大小,而ArrayList是动态变化的. 3.Arra ...
- SQL-18 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不准使用order by
题目描述 查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no.薪水salary.last_name以及first_name,不准使用order byCREATE ...
- SharePoint online Multilingual support - Settings
博客地址:http://blog.csdn.net/FoxDave This post will talk about how to enable sharepoint online site mul ...
- Install SharePoint 2013 with SP1 on Windows Server 2012 R2 error - This Product requires .NF 4.5
博客地址:http://blog.csdn.net/FoxDave 最近因为项目需要要搭建SharePoint 2013的开发环境. 准备了Windows Server 2012 R2系统和Sha ...
- poj1062(分区间迪杰斯特拉,内含测试数据,一直wa的同学可以进来看看)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54946 Accepted: 16518 Descripti ...
- 2010年腾讯前端面试题学习(jquery,html,css部分)
看了牛人写的回忆文章,里面有2010年腾讯的前端面试题,里面涉及到不少基础性的问题,js部分已学习,这是jquery,html和css部分,学习一下:) 原文地址:https://segmentfau ...
- WebService的一种简单应用方式入门
1.什么是WebService? WebService即Web服务,简单来讲,他就是一种跨编程语言和跨操作平台的远程调用技术. 2.Web服务: Web服务是基于HTTP和XML的技术:HTTP是互联 ...
- winform 异性窗体的实现
效果图 首先需要在vs里添加控件 AlphaForm.dll 添加完了有这来两个控件 1.把第二个控件拖入窗体里把窗体铺满 2.找一张至少有一个闭合图形的透明图片 设置为AlphaFormTrans ...