如何使用C#检测IIS版本?
如何使用C#检测IIS版本?
更新:我的意思是从一个winapp(实际上情况是开发一个自定义安装程序,想检查安装的IIS的版本,以调用适当的API)
您可以从SERVER_SOFTWARE
variables中获取这些信息。 它会返回以下内容:
Microsoft-IIS/5.0 (Windows 2000)
Microsoft-IIS/5.1 (Windows XP)
Microsoft-IIS/6.0 (Windows 2003 Server)
等等
如果你使用ASP.NET,你可以通过获取这个string
Request.ServerVariables["SERVER_SOFTWARE"];
编辑:看来,你将不得不查询registry来获取这些信息。 看看这个页面 ,看看如何。
在这里find答案: 链接文本 fileVersion方法剂量不能在Windows 2008上工作,inetserv EXE是我猜的其他地方。
public Version GetIisVersion() { using (RegistryKey componentsKey = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\InetStp", false)) { if (componentsKey != null) { int majorVersion = (int)componentsKey.GetValue("MajorVersion", -1); int minorVersion = (int)componentsKey.GetValue("MinorVersion", -1); if (majorVersion != -1 && minorVersion != -1) { return new Version(majorVersion, minorVersion); } } return new Version(0, 0); } }
我testing了它,它在Windows XP,7和2008上完美工作
这是我如何做到这一点。
FileVersionInfo verinfo = FileVersionInfo.GetVersionInfo(System.Environment.SystemDirectory + @"\inetsrv\inetinfo.exe"); //Tip... look at verinfo.MajorVersion.
你可以在registry中find它。
直到IIS版本6,你可以在这里find它:
HKLM \系统\ CurrentControlSet \服务\ W3SVC \参数
从这里版本7开始:
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ InetStp
MajorVersion MinorVersion
正如我所知,它通常在响应的http标题中提供。
使用System.Web.HttpRequest.ServerVariables(“SERVER_SOFTWARE”)。 返回值是一个格式为name / version的string。
你可以使用下面的代码
public static bool IisInstalled() { try { using (RegistryKey iisKey = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\InetStp")) { return (int)iisKey.GetValue("MajorVersion") >= 6; } } catch { return false; } }
详细信息请访问: http : //www.java2s.com/Code/CSharp/Windows/IIShelperisIISInstalledIISstateIISversion.htm
对于具有自定义操作的安装程序:在自定义操作视图中,可以通过自定义操作的属性中的“CustomActionData”属性将数据传递到客户安装程序类,如下所示:/ iisv =“[IISVERSION]”
检查:
在.NET 4.5中
HttpRuntime.IISVersion
我只是检查操作系统的版本:xp有IIS 5.1,Server 2003有IIS 6,Vista / Server 2008有IIS 7。
以下是如何检查操作系统的版本 。
检查X-Powered-By标题: http : //www.http-stats.com/X-Powered-By
在那里你可以find可能的值…