公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

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

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

介紹

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

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

背景

確定是否安裝了特定版本的 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 是不夠的,您需要確定是否還安裝了特定的子組件。同樣,我們可以轉向注冊表以獲取此信息。所有子組件信息都包含在以下注冊表項中:

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

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

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

用于后臺智能傳輸服務 (BITS) 服務器擴展的Internet 服務器應用程序編程接口 (ISAPI)
BitsServerExtensionsISAPI
后臺智能傳輸服務 (BITS)
服務器擴展管理單元
位服務器擴展管理器
FrontPage 服務器擴展fp_extensions
網絡印刷網印
用于
通過 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創建該類。這個類公開了以下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)

正如你所看到的,這些函數使用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));
}
關鍵點

這些public 方法只是確定private 應該調用哪個函數的包裝器這些private 函數反過來查詢適當的注冊表項并處理結果。然而,真正的工作是在GetRegistryValue<T>函數中完成的這是一個通用函數,它返回一個boolean,該值指示是否找到了請求的注冊表項,以及一個out包含該值參數。

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

附件:MSNET20.zip


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

主站蜘蛛池模板: 国产在线无码精品无码 | 国产综合精品婷婷丁香五月 | 91制片厂果冻星空传媒科幻 | 精品无码视频在线观看专区 | 国产黄色电影在线观看 | 91精品国产品国语在线不卡 | 丰满美女冒白浆久久久久久久 | 国产成人免费不卡在线观看 | 高潮喷水波多野结衣在线观看 | 国产成人亚洲精品另类动态 | 国产麻豆小电影 | 国内一国产农村妇女一级毛片 | 精品国产福利片在线观看 | 国产精品亚韩精品无码在线 | 97色伦图区97色伦综合图区 | av在线播放黄片 | 精品国产va久久久久久久冰 | 国产午夜福利不卡在线观看视频 | 顶级少妇a级毛片 | 丰满熟妇人妻中文字幕 | 高清无码电影免费专区 | 国产欧美999日本黄页在线 | 国产精品欧美久久久天天影视 | 国产精品欧美一区久久 | 国产一级毛片aaa高级a大片 | 91大神精品无码在线观看 | 国产爆乳无码av一区二区 | 岛国在线观看一 | 国产午夜精品理论片 | 99久久婷婷免费国产综合精品 | 97无码免费人妻视频 | 国产精品狼人久久久久影院 | 国产成人高清在线观看播放 | 国精产品一区一区三区糖心 | 99精品在线 | 国产在线精品一区二区在线观看 | 国产最新免费一区二区三区 | 国产喷水1区2区3区咪咪爱av | 18禁男女无遮挡啪啪网站 | 精品久久99久久久久胖女人 | 成人无码中文av天堂 |