2009-01-15 21 views
34

Làm cách nào để phát hiện phiên bản IIS bằng C#?Làm thế nào để phát hiện phiên bản IIS bằng C#?

Cập nhật: Tôi có nghĩa là từ một winapp (thực sự là kịch bản đang phát triển một trình cài đặt tùy chỉnh mà muốn kiểm tra phiên bản của IIS được cài đặt để gọi api thích hợp của)

+0

Server-side hoặc phía khách hàng (ví dụ gọi một web IIS từ một ứng dụng winforms)? Tôi đoán bạn có nghĩa là phía máy chủ. – splattne

+0

Tôi có nghĩa là từ một winapp (thực tế kịch bản đang phát triển một trình cài đặt tùy chỉnh muốn kiểm tra phiên bản của IIS đã cài đặt để gọi api thích hợp) nên ghi nó vào câu hỏi chính .. (xin lỗi) .. –

Trả lời

29

Bạn có thể lấy thông tin này từ biến SERVER_SOFTWARE . Nó sẽ trở lại như sau:

Microsoft-IIS/5.0 (Windows 2000)
Microsoft-IIS/5.1 (Windows XP)
Microsoft-IIS/6.0 (Windows 2003 Server)

, vv

Nếu bạn đang sử dụng ASP.NET, bạn có thể nhận được chuỗi này qua

Request.ServerVariables["SERVER_SOFTWARE"]; 

EDIT : Có vẻ như bạn sẽ phải truy vấn sổ đăng ký để nhận thông tin này. Hãy xem this page để xem cách thực hiện.

+0

Liên kết đó chính xác những gì tôi cần cảm ơn u. –

+9

-1 Điều này sẽ chỉ hoạt động từ một yêu cầu web – balexandre

6

U có thể tìm thấy nó trong sổ đăng ký.

Lên đến IIS phiên bản 6, bạn có thể tìm thấy nó ở đây:

HKLM \ SYSTEM \ CurrentControlSet \ Services \ W3SVC \ Parameters

Kể từ phiên bản 7 ở đây:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ InetStp

MajorVersion MinorVersion

+0

IIS 7 cũng có một mục trong HKLM \ SYSTEM \ CurrentControlSet \ Services \ W3SVC \ Parameters, ít nhất là trên Windows7 32 bit. (Phiên bản chính 7, phiên bản thứ 5). Tuy nhiên, phím này xuất hiện không được availalbe trên Windows Server 2008 (IIS7) nữa. –

3

Người ta thường được trình bày trong phần đầu http phản ứng, như tôi biết.

3

Sử dụng System.Web.HttpRequest.ServerVariables ("SERVER_SOFTWARE"). Giá trị trả về là một chuỗi trong tên/phiên bản định dạng.

12

Đây là cách tôi thực hiện.

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

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

Fantastic, thxs! – balexandre

+0

hoạt động cho XP, Win7, Win2003, Win2008? – Kiquenet

+1

Điều này đang ném một FileNotFoundException trên Windows2008R2 (ngay cả khi các tập tin có). Có vẻ như vấn đề về quyền của tệp. –

33

Tìm thấy câu trả lời ở đây: link text Phương thức tệpVersion không hoạt động trên Windows 2008, exet inetserv ở đâu đó khác mà tôi đoán.

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); 
    } 
} 

Tôi đã thử nghiệm nó, nó hoạt động hoàn hảo trên Windows XP, 7 và 2008

+0

cũng hoạt động trong windows 8 và 2012. – artfulhacker

+0

Hoạt động với Windows 2003 Server! – dotnetguy

2

Đối với trình cài đặt với hành động tùy chỉnh: Theo quan điểm hành động tùy chỉnh, bạn có thể truyền dữ liệu đến lớp cài đặt khách hàng của bạn thông qua " CustomActionData" thuộc tính trong các thuộc tính cho hành động tùy chỉnh như sau: /iisv = "[IISVERSION]"

Kiểm tra:

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

1

Trong NET 4,5

HttpRuntime.IISVersion 
+2

xin vui lòng thêm một số loại giải thích quá trong khi trả lời câu hỏi .. – Lal

+0

Tự giải thích ... Làm thế nào để phát hiện phiên bản IIS bằng cách sử dụng C#? Sử dụng httpRuntime.IISVersion. – h0ckey09

+0

Khi tôi hiểu câu hỏi, OP đang tìm phiên bản IIS khi chạy trình cài đặt. HttpRuntime.IISVersion sẽ trả về 'null' nếu ứng dụng đang chạy không được IIS lưu trữ, vì vậy câu trả lời này không xuất hiện để trợ giúp OP. – Beofett

Các vấn đề liên quan