[每天解决一问题系列 - 0012] 如何通过程序获取IIS站点信息
问题描述:
在WiX中需要判断某个站点是否存在,WiX没有这个能力,该怎么做呢?
解决方案:
解决方法就是写一个Custom Action来检测,实现的途径也有很多,现在想到了这么几个
1)PowerShell 需要考虑操作系统的兼容性,只有Vista以上的操作系统才支持
2)WMI
3).net 提供的库以及IIS自己的库, 注意需要区分版本
IIS 6 的代码(需引用System.DirectoryServices.dll)
DirectoryEntry Services = new DirectoryEntry("IIS://localhost/W3SVC"); IEnumerator ie = Services.Children.GetEnumerator(); DirectoryEntry Server = null; while (ie.MoveNext()) { Server = (DirectoryEntry)ie.Current; if (Server.SchemaClassName == "IIsWebServer") { Console.WriteLine(Server.Properties["ServerComment"][0].ToString()); } }
IIS 7、8 的代码 (需引用c:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll)
var iisManager = new ServerManager(); SiteCollection sites = iisManager.Sites; foreach (var s in sites) { Console.WriteLine(s.Name); }