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[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; }
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); }
桂棹兮兰桨,击空明兮溯流光。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战