狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#/C++】使用托管代碼檢測IIS是否安裝并注冊了ASP/ASP.NET等服務

admin
2021年6月11日 17:48 本文熱度 3430

介紹

我之前關于使用托管代碼檢測安裝了哪些 .NET Framework 版本和服務包的文章生成了一些與檢測 Internet 信息服務 (IIS) 是否已安裝以及 ASP 或 ASP.NET 是否已注冊相關的后續(xù)問題。

由于這是一個托管代碼解決方案,它確實需要已經(jīng)安裝了 .NET Framework 的一個版本,因此不能保證此類作為安裝過程的一部分工作。如果您需要在安裝過程中可靠地執(zhí)行此操作,則需要考慮使用非托管 C++ 執(zhí)行相同的工作。

背景

確定是否安裝了特定版本的 Internet 信息服務的正確方法是在注冊表中查找以下項:

HKLM\Software\Microsoft\InetStp\MajorVersion
HKLM\Software\Microsoft\InetStp\
VersionString

這是一個 DWORD 值,指示安裝的 IIS 版本(如果存在)。

主要版本IIS版本描述
4IIS 4在 Windows NT 4 的 NT Option Pack 中提供
5IIS 5在 Windows 2000 Server 和 Windows XP Professional 中提供
6IIS 6在 Windows Server 2003 中提供
7IIS 7在 Windows Vista 中提供

對于 IIS 5,您可以使用 MinorVersion DWORD 值來確定您是在 Windows 2000 Server 還是 Windows XP Professional 上運行。如果 MinorVersion 為 1,則您在 Windows XP Professional 上運行。

檢測 IIS 子組件

有時,僅僅知道是否安裝了 IIS 是不夠的,您需要確定是否還安裝了特定的子組件。同樣,我們可以轉(zhuǎn)向注冊表以獲取此信息。所有子組件信息都包含在以下注冊表項中:

HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\Oc Manager\Subcomponents

此鍵下的所有值都是 DWORD,因此如果值為 1,則安裝該組件。

IIS 子組件注冊表值
IIS常用文件iis_common
用于 IIS 的 Active Server Pages (ASP)iis_asp
文件傳輸協(xié)議 (FTP) 服務iis_ftp
IIS 管理器(Microsoft 管理控制臺 [MMC] 管理單元)iis_inetmgr
互聯(lián)網(wǎng)數(shù)據(jù)連接器iis_internetdataconnector
網(wǎng)絡新聞傳輸協(xié)議 (NNTP) 服務iis_nntp
服務器端包含iis_serversideincludes
簡單郵件傳輸協(xié)議 (SMTP) 服務iis_smtp
Web 分布式創(chuàng)作和版本控制 (WebDAV) 發(fā)布iis_webdav
萬維網(wǎng) (WWW) 服務iis_www
遠程管理 (HTML)sakit_web

用于后臺智能傳輸服務 (BITS) 服務器擴展的Internet 服務器應用程序編程接口 (ISAPI)
BitsServerExtensionsISAPI
后臺智能傳輸服務 (BITS)
服務器擴展管理單元
位服務器擴展管理器
FrontPage 服務器擴展fp_extensions
網(wǎng)絡印刷網(wǎng)印
用于
通過 Web托管終端服務客戶端連接的ActiveX 控件和示例頁面
客戶端

檢測是否已注冊 ASP 或 ASP.NET

為了檢測 ASP 是否在 IIS 中注冊,您可以簡單地查看是否安裝了 ASP 組件 (iis_asp)。但是,對于 ASP.NET,由于有不同版本的 ASP.NET,它變得有點復雜。我們還可以通過查看以下鍵來使用注冊表獲取此信息:

框架版本注冊表項
ASP.NET v1.1HKLM\Software\Microsoft\ASP.NET\1.1.4322.0
ASP.NET v2.0HKLM\Software\Microsoft\ASP.NET\2.0.50727.0

如果該鍵存在,則該版本的 ASP.NET 已向 IIS 注冊。

使用代碼

為了整合檢查所有各種注冊表項并幫助隔離 .NET Framework 和 IIS 的未來版本的更改,InternetInformationServicesDetection創(chuàng)建該類。這個類公開了以下public方法:

  • C#
    public  static  bool IsInstalled(InternetInformationServicesVersion iisVersion)
  • C#
    public  static  bool IIsInstalled(InternetInformationServicesComponent subcomponent)
  • C#
    public  static  bool IsAspRegistered()
  • C#
    public  static  bool IsAspNetRegistered(FrameworkVersion frameworkVersion)

正如你所看到的,這些函數(shù)使用FrameworkVersion,InternetInformationServicesVersionInternetInformationServicesComponent枚舉。這些枚舉具有以下定義:

C#
/// <span class="code-SummaryComment"><summary></span>
/// Specifies the .NET Framework versions
/// <span class="code-SummaryComment"></summary></span>
public enum FrameworkVersion
{
/// <span class="code-SummaryComment"><summary></span>
 /// .NET Framework 1.0
 /// <span class="code-SummaryComment"></summary></span>
 Fx10,
/// <span class="code-SummaryComment"><summary></span>
 /// .NET Framework 1.1
 /// <span class="code-SummaryComment"></summary></span>
 Fx11,
/// <span class="code-SummaryComment"><summary></span>
 /// .NET Framework 2.0
 /// <span class="code-SummaryComment"></summary></span>
 Fx20,
/// <span class="code-SummaryComment"><summary></span>
 /// .NET Framework 3.0
 /// <span class="code-SummaryComment"></summary></span>
 Fx30,
/// <span class="code-SummaryComment"><summary></span>
 /// .NET Framework 3.5 (Orcas)
 /// <span class="code-SummaryComment"></summary></span>
 Fx35,
}
/// <span class="code-SummaryComment"><summary></span>
/// Specifies the Internet Information Services (IIS) versions
/// <span class="code-SummaryComment"></summary></span>
public enum InternetInformationServicesVersion
{
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Information Services 4
 /// <span class="code-SummaryComment"></summary></span>
 /// <span class="code-SummaryComment"><remarks>Shipped in NT Option Pack for Windows NT 4</remarks></span>
 IIS4,
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Information Services 5
 /// <span class="code-SummaryComment"></summary></span>
 /// <span class="code-SummaryComment"><remarks>Shipped in Windows 2000 Server and Windows XP Professional</remarks></span>
 IIS5,
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Information Services 6
 /// <span class="code-SummaryComment"></summary></span>
 /// <span class="code-SummaryComment"><remarks>Shipped in Windows Server 2003</remarks></span>
 IIS6,
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Information Services 7
 /// <span class="code-SummaryComment"></summary></span>
 /// <span class="code-SummaryComment"><remarks>Shipped in Windows Vista</remarks></span>
 IIS7,
}
/// <span class="code-SummaryComment"><summary></span>
/// Specifies the Internet Information Services (IIS) versions
/// <span class="code-SummaryComment"></summary></span>
public enum InternetInformationServicesComponent
{
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Information Services Common Files
 /// <span class="code-SummaryComment"></summary></span>
 Common,
/// <span class="code-SummaryComment"><summary></span>
 /// Active Server Pages (ASP) for Internet Information Services
 /// <span class="code-SummaryComment"></summary></span>
 ASP,
/// <span class="code-SummaryComment"><summary></span>
 /// File Transfer Protocol (FTP) service
 /// <span class="code-SummaryComment"></summary></span>
 FTP,
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Information Services Manager
 /// <span class="code-SummaryComment"></summary></span>
 InetMgr,
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Data Connector
 /// <span class="code-SummaryComment"></summary></span>
 InternetDataConnector,
/// <span class="code-SummaryComment"><summary></span>
 /// Network News Transfer Protocol (NNTP) service
 /// <span class="code-SummaryComment"></summary></span>
 NNTP,
/// <span class="code-SummaryComment"><summary></span>
 /// Server-Side Includes
 /// <span class="code-SummaryComment"></summary></span>
 ServerSideIncludes,
/// <span class="code-SummaryComment"><summary></span>
 /// Simple Mail Transfer Protocol (SMTP) service
 /// <span class="code-SummaryComment"></summary></span>
 SMTP,
/// <span class="code-SummaryComment"><summary></span>
 /// Web Distributed Authoring and Versioning (WebDAV) publishing
 /// <span class="code-SummaryComment"></summary></span>
 WebDAV,
/// <span class="code-SummaryComment"><summary></span>
 /// World Wide Web (WWW) service
 /// <span class="code-SummaryComment"></summary></span>
 WWW,
/// <span class="code-SummaryComment"><summary></span>
 /// Remote administration (HTML)
 /// <span class="code-SummaryComment"></summary></span>
 RemoteAdmin,
/// <span class="code-SummaryComment"><summary></span>
 /// Internet Server Application Programming Interface (ISAPI) for
 /// Background Intelligent Transfer Service (BITS) server extensions
 /// <span class="code-SummaryComment"></summary></span>
 BitsISAPI,
/// <span class="code-SummaryComment"><summary></span>
 /// Background Intelligent Transfer Service (BITS) server extensions
 /// <span class="code-SummaryComment"></summary></span>
 Bits,
/// <span class="code-SummaryComment"><summary></span>
 /// FrontPage server extensions
 /// <span class="code-SummaryComment"></summary></span>
 FrontPageExtensions,
/// <span class="code-SummaryComment"><summary></span>
 /// Internet printing
 /// <span class="code-SummaryComment"></summary></span>
 InternetPrinting,
/// <span class="code-SummaryComment"><summary></span>
 /// ActiveX control and sample pages for hosting Terminal Services
 /// client connections over the web
 /// <span class="code-SummaryComment"></summary></span>
 TSWebClient,
}

C# 中的完整示例如下所示:

C#
bool iis4Installed =
InternetInformationServicesDetection.IsInstalled
(InternetInformationServicesVersion.IIS4);
bool iis5Installed =
InternetInformationServicesDetection.IsInstalled
(InternetInformationServicesVersion.IIS5);
bool iis6Installed =
InternetInformationServicesDetection.IsInstalled
(InternetInformationServicesVersion.IIS6);
bool iis7Installed =
InternetInformationServicesDetection.IsInstalled
(InternetInformationServicesVersion.IIS7);
Console.WriteLine("IIS 4 installed? {0}", iis4Installed);
Console.WriteLine("IIS 5 installed? {0}", iis5Installed);
Console.WriteLine("IIS 6 installed? {0}", iis6Installed);
Console.WriteLine("IIS 7 installed? {0}", iis7Installed);
if (iis4Installed || iis5Installed || iis6Installed || iis7Installed)
{
Console.WriteLine("ASP Registered? {0}",
InternetInformationServicesDetection.IsAspRegistered());
Console.WriteLine("ASP.NET 1.0 Registered? {0}",
InternetInformationServicesDetection.IsAspNetRegistered(FrameworkVersion.Fx10));
Console.WriteLine("ASP.NET 1.1 Registered? {0}",
InternetInformationServicesDetection.IsAspNetRegistered(FrameworkVersion.Fx11));
Console.WriteLine("ASP.NET 2.0 Registered? {0}",
InternetInformationServicesDetection.IsAspNetRegistered(FrameworkVersion.Fx20));
// These really don't exist, they are actually the .NET 2.0 version of ASP.NET.
Console.WriteLine("ASP.NET 3.0 Registered? {0}",
InternetInformationServicesDetection.IsAspNetRegistered(FrameworkVersion.Fx30));
Console.WriteLine("ASP.NET 3.5 Registered? {0}",
InternetInformationServicesDetection.IsAspNetRegistered(FrameworkVersion.Fx35));
}
關鍵點

這些public 方法只是確定private 應該調(diào)用哪個函數(shù)的包裝器這些private 函數(shù)反過來查詢適當?shù)淖员眄棽⑻幚斫Y(jié)果。然而,真正的工作是在GetRegistryValue<T>函數(shù)中完成的這是一個通用函數(shù),它返回一個boolean,該值指示是否找到了請求的注冊表項,以及一個out包含該值參數(shù)。

需要注意的是,如果用戶沒有訪問注冊表的適當權(quán)限,該函數(shù)將拋出一個異常,該異常將向上冒泡給原始調(diào)用者。這樣做是為了讓調(diào)用者能夠根據(jù)拋出的異常采取不同的操作。

附件:MSNET20.zip


該文章在 2021/6/11 17:48:18 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結(jié)合碼頭的業(yè)務特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved