Как определить версию IIS с помощью C #? - PullRequest
36 голосов
/ 15 января 2009

Как определить версию IIS с помощью C #?

Обновление: Я имел в виду winapp (на самом деле сценарий разрабатывает пользовательский установщик, который хочет проверить версию установленного IIS, чтобы вызвать соответствующие API)

Ответы [ 11 ]

35 голосов
/ 09 ноября 2009

Нашел ответ здесь: текст ссылки Метод fileVersion не работает в Windows 2008, exetserv 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

30 голосов
/ 15 января 2009

Вы можете получить эту информацию из переменной 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"];

РЕДАКТИРОВАТЬ: Похоже, вам придется запросить реестр, чтобы получить эту информацию. Взгляните на эту страницу , чтобы узнать как.

12 голосов
/ 15 января 2009

Вот как я это делаю.

FileVersionInfo verinfo = FileVersionInfo.GetVersionInfo(System.Environment.SystemDirectory + @"\inetsrv\inetinfo.exe");

//Tip... look at verinfo.MajorVersion.
6 голосов
/ 15 января 2009

U можно найти в реестре.

До версии 6 IIS вы можете найти ее здесь:

HKLM \ SYSTEM \ CurrentControlSet \ Services \ W3SVC \ Parameters

Начиная с версии 7 здесь:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ InetStp

MajorVersion MinorVersion

4 голосов
/ 15 января 2009

Использовать System.Web.HttpRequest.ServerVariables ("SERVER_SOFTWARE"). Возвращаемое значение представляет собой строку в формате имя / версия.

3 голосов
/ 08 апреля 2013

Вы можете использовать ниже код

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

3 голосов
/ 15 января 2009

Обычно он представлен в http заголовке ответа, как я знаю.

2 голосов
/ 04 августа 2014

В .NET 4.5

HttpRuntime.IISVersion
2 голосов
/ 22 декабря 2011

Для установщика с пользовательскими действиями: В представлении настраиваемого действия вы можете передавать данные в ваш класс установщика клиента через атрибут «CustomActionData» в свойствах настраиваемого действия следующим образом: / Iisv = "[IISVERSION]"

Проверка:

http://johnbarshinger.wordpress.com/2006/10/27/how-to-modify-the-vs2005-installer-to-set-the-asp-net-version-and-create-application-pools/

0 голосов
/ 18 августа 2009

Я бы просто проверил версию ОС: xp имеет IIS 5.1, Server 2003 имеет IIS 6, а Vista / Server 2008 имеет IIS 7.

Вот как проверить версию ОС .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...