2009-01-15 61 views
34

如何使用C#檢測IIS版本?如何使用C#檢測IIS版本?

更新: 我從winapp意味着(實際上該方案正在制定要檢查的安裝IIS的版本調用自定義安裝相應的API的)

+0

服務器端或客戶端(例如從一個winforms應用程序調用IIS網站)?我想你的意思是服務器端。 – splattne 2009-01-15 11:58:43

+0

我的意思是從一個winapp(實際上情況是開發一個自定義安裝程序,想檢查已安裝的IIS的版本以調用相應的api) 應該在主要問題中寫下它。(抱歉).. – 2009-01-15 12:11:11

回答

29

你可以從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"]; 

編輯得到這個字符串:似乎您將不得不查詢註冊表以獲取此信息。看看this page看看如何。

+0

該鏈接正是我需要感謝你。 – 2009-01-15 12:40:33

+9

-1這將僅適用於Web請求 – balexandre 2010-01-25 19:21:47

6

你可以在註冊表中找到它。

最多IIS 6版本,你可以在這裏找到:

HKLM \系統\ CurrentControlSet \服務\ W3SVC \參數

自從7版在這裏:

HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ InetStp

MajorVersion MinorVersion

+0

IIS 7在HKLM \ SYSTEM \ CurrentControlSet \ Services \ W3SVC \ Parameters中也有一個條目,至少在Windows7 32位上。 (主要版本7,次要版本5)。但是這個密鑰似乎不再適用於Windows Server 2008(IIS7)。 – 2010-09-07 07:53:34

3

它在響應的HTTP頭中通常呈現,因爲我知道。

3

使用System.Web.HttpRequest.ServerVariables(「SERVER_SOFTWARE」)。返回值是格式名稱/版本中的字符串。

12

這就是我該怎麼做的。

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

//Tip... look at verinfo.MajorVersion. 
+0

太棒了,thxs! – balexandre 2010-01-25 19:22:29

33

在這裏找到答案:link text 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,Windows 7和2008年

1

在.NET 4.5

HttpRuntime.IISVersion