簡體   English   中英

編程檢查IIS7中是否啟用了IIS6兼容性角色

[英]Programmatic check if the IIS6 compatibility role is enabled/disabled in IIS7

如果在IIS7上啟用/禁用IIS6兼容性角色,如何使用C#進行檢查?

您可以檢查讀取注冊表中的值

HKEY_LOCAL_MACHINE\Software\Microsoft\InetStp\Components\WMICompatibility

或者,您可以將servermanagercmd的內容輸出到xml文件並解析該文件以查找iis6兼容性組件

ServerManagerCmd -query [SaveFile.xml]

如果您在R2上執行此操作,現在不推薦使用servermanagercmd,因此您可能希望使用powershell來實現相同的檢查。 以下是一些PowerShell示例,在這種情況下遠程完成http://www.techmumbojumblog.com/?p=217

在驗證兼容性工具是否安裝之后,如果您在IIS上執行了更多配置任務,那么前一個答案中的WMI方法也可能是好的。

順便說一句,如果你確實找到了兼容組件未處理的配置設置,這就是我從C#中發現的,我在iis6中通過wmi配置的工作在網站級別和網站級別(網站,虛擬目錄和池,但為了配置網絡服務器級別,我不得不使用與System32 \\ inetsrv中的iis7,Microsoft.Web.Administration.dll一起安裝的api。

using Microsoft.Web.Administration;

拜托,有人給出了一個很好的答案! 作為動機,這是一個非常糟糕的答案=)

// Ok, this is stupid, but I can't find any other way to do this
// Detect whether we're in integrated mode or not
#warning GIANT HACK FOR IIS7 HERE
try
{
    var x = HttpContext.Current.CurrentNotification;
    _isIntegratedMode = true;
}
catch (PlatformNotSupportedException)
{
    _isIntegratedMode = false;
}
catch (NullReferenceException)
{
    _isIntegratedMode = true;
}

這就是我們的代碼目前正在做的事情(是的,我知道這是非常糟糕的 - 因此警告)

您可以通過以編程方式查詢IIS7的WMI提供程序來實現。 http://learn.iis.net/page.aspx/162/managing-sites-with-iis-7039s-wmi-provider/

我不知道你是否可以通過powershell做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM