.netiisversion-detection

How to programmatically determine installed IIS version


What would the preferred way of programmatically determining which the currently installed version of Microsoft Internet Information Services (IIS) is?

I know that it can be found by looking at the MajorVersion key in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters.

Would this be the recommended way of doing it, or is there any safer or more beautiful method available to a .NET developer?


Solution

  • You could build a WebRequest and send it to port 80 on a loopback IP address and get the Server HTTP header.

    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1/");
    HttpWebResponse myHttpWebResponse = null;
    try
    {
        myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
    }
    catch (WebException ex)
    {
        myHttpWebResponse = (HttpWebResponse)ex.Response;
    }
    string WebServer = myHttpWebResponse.Headers["Server"];
    myHttpWebResponse.Close();
    

    Not sure if that's a better way of doing it but it's certainly another option.