欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

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

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

介紹

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

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

背景

確定是否安裝了特定版本的 Internet 信息服務(wù)的正確方法是在注冊(cè)表中查找以下項(xiàng):

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

這是一個(gè) 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 中提供

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

檢測(cè) IIS 子組件

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

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

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

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

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

檢測(cè)是否已注冊(cè) ASP 或 ASP.NET

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

框架版本注冊(cè)表項(xiàng)
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 注冊(cè)。

使用代碼

為了整合檢查所有各種注冊(cè)表項(xiàng)并幫助隔離 .NET Framework 和 IIS 的未來版本的更改,InternetInformationServicesDetection創(chuàng)建該類。這個(gè)類公開了以下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ù)使用FrameworkVersionInternetInformationServicesVersionInternetInformationServicesComponent枚舉。這些枚舉具有以下定義:

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));
}
關(guān)鍵點(diǎn)

這些public 方法只是確定private 應(yīng)該調(diào)用哪個(gè)函數(shù)的包裝器這些private 函數(shù)反過來查詢適當(dāng)?shù)淖?cè)表項(xiàng)并處理結(jié)果。然而,真正的工作是在GetRegistryValue<T>函數(shù)中完成的這是一個(gè)通用函數(shù),它返回一個(gè)boolean,該值指示是否找到了請(qǐng)求的注冊(cè)表項(xiàng),以及一個(gè)out包含該值參數(shù)。

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

附件:MSNET20.zip


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