Как определить версию IIS с помощью С#?
Обновление: Я имел ввиду от winapp (на самом деле сценарий разрабатывает собственный установщик, который хочет проверить версию установленного IIS, чтобы вызвать соответствующий api)
Как определить версию IIS с помощью С#?
Обновление: Я имел ввиду от winapp (на самом деле сценарий разрабатывает собственный установщик, который хочет проверить версию установленного IIS, чтобы вызвать соответствующий api)
Вы можете получить эту информацию из переменной SERVER_SOFTWARE
. Он вернет следующее:
Microsoft-IIS/5.0 (Windows 2000)
Microsoft-IIS/5.1 (Windows XP)
Microsoft-IIS/6.0 (Windows 2003 Server)
и др.
Если вы используете ASP.NET, вы можете получить эту строку через
Request.ServerVariables["SERVER_SOFTWARE"];
EDIT: Кажется, вам придется запросить реестр, чтобы получить эту информацию. Посмотрите эту страницу, чтобы узнать, как это сделать.
Нашел ответ здесь: текст ссылки Метод 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);
}
}
Я тестировал его, он отлично работает в Windows XP, 7 и 2008
Вот как я это делаю.
FileVersionInfo verinfo = FileVersionInfo.GetVersionInfo(System.Environment.SystemDirectory + @"\inetsrv\inetinfo.exe");
//Tip... look at verinfo.MajorVersion.
U может найти его в реестре.
До версии IIS версии 6 вы можете найти ее здесь:
HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Параметры
Начиная с версии 7 здесь:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp
MajorVersion MinorVersion
Обычно он представлен в HTTP-заголовке ответа, как я знаю.
Используйте System.Web.HttpRequest.ServerVariables( "SERVER_SOFTWARE" ). Возвращаемое значение представляет собой строку в имени/версии формата.
Вы можете использовать ниже код
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]"
Check:
В .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
Здесь вы можете найти значения...