servicio requiere programa posterior net internet instalar instalacion information este asp c# vb.net iis iis-7 vbscript

c# - requiere - ¿Cómo compruebo si se ha instalado la característica de compatibilidad de administración de IIS 6?



instalar iis en windows 10 (1)

Realicé algunas pruebas usando una copia de prueba de Registry Workshop (la función Compare Registries) y encontré lo siguiente:

Si IIS 7.x está instalado, la siguiente clave del Registro contiene información sobre los subcomponentes instalados:

HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / InetStp / Components

Cada característica instalada se representa con un valor de DWORD 0x00000001. Si una característica no está instalada, el valor falta.

Para las herramientas de administración web, los nombres de los valores son los siguientes:

Web Management Tools IIS 6 Management Compatibility IIS 6 Management Console (LegacySnapin) IIS 6 Scripting Tools (LegacyScripts) IIS 6 WMI Compatibility (WMICompatibility) IIS Metabase and IIS 6 configuration compatibility (Metabase + ADSICompatibility) IIS Management Console (ManagementConsole) IIS Management Scripts and Tools (ManagementScriptingTools) IIS Management Service (AdminService)

Tenga en cuenta que estos nombres de componentes provienen de una instalación de Windows 7 y pueden diferir ligeramente de los de Windows Server 2008, aunque las claves del Registro deberían ser las mismas.

Parte de esto se menciona en una nota de este artículo: Uso de código administrado para detectar si IIS está instalado y ASP / ASP.NET está registrado.

Puede encontrar una lista de estos y otros subcomponentes aquí: Descubrir componentes instalados

Actualizar:

Algunas funciones centrales del código final. Este no es el código completo, pero debería ser suficiente para cualquiera que dedique tiempo a buscar los nombres de los componentes para las distintas versiones de IIS:

Function IsIISComponentInstalled(ByVal ComponentName) Dim result Dim intProcessorArchitecture intProcessorArchitecture = GetProcessorArchitectureIIS() If intProcessorArchitecture = 64 Then ''64-bit system On Error Resume Next Err.Clear result = RegReadDWORD(HKEY_LOCAL_MACHINE, "SOFTWARE/Microsoft/InetStp/Components", ComponentName, 64) If Err.Number <> 0 Then Err.Clear IsIISComponentInstalled = False Else If result = 1 Then IsIISComponentInstalled = True Else IsIISComponentInstalled = False End If End If Else ''32-bit system If RegReadStringIIS("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/InetStp/Components/" & ComponentName) = "1" Then IsIISComponentInstalled = True Else IsIISComponentInstalled = False End If End If End Function Function GetProcessorArchitectureIIS() Dim strProcessorArchitecture Dim oShell Set oShell = CreateObject("Wscript.Shell") strProcessorArchitecture = oShell.RegRead("HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Environment/PROCESSOR_ARCHITECTURE") If strProcessorArchitecture = "x86" Then GetProcessorArchitectureIIS = 32 Else If strProcessorArchitecture = "AMD64" Then GetProcessorArchitectureIIS = 64 Else GetProcessorArchitectureIIS = 0 End If End If End Function Function RegReadStringIIS(sRegValue) Set oShell = CreateObject("WScript.Shell") On Error Resume Next RegReadStringIIS = oShell.RegRead(sRegValue) If Err Then RegReadStringIIS = "" Err.clear End If If VarType(RegReadStringIIS) < vbArray Then If RegReadStringIIS = sRegValue Then RegReadStringIIS = "" End If End If On Error Goto 0 End Function ''------------------------------------------------------------------- '' Reads a REG_SZ value from the local computer''s registry using WMI. '' Parameters: '' RootKey - The registry hive (see http://msdn.microsoft.com/en-us/library/aa390788(VS.85).aspx for a list of possible values). '' Key - The key that contains the desired value. '' Value - The value that you want to get. '' RegType - The registry bitness: 32 or 64. '' ''References: '' http://stackoverflow.com/questions/1229760/how-do-i-read-64-bit-registry-values-from-vbscript-running-as-a-an-msi-post-inst '' http://msdn.microsoft.com/en-us/library/aa393067(VS.85).aspx '' http://msdn.microsoft.com/en-us/library/windows/desktop/aa390445(v=VS.85).aspx '' Function RegReadDWORD(RootKey, Key, Value, RegType) Dim oCtx, oLocator, oReg, oInParams, oOutParams Set oCtx = CreateObject("WbemScripting.SWbemNamedValueSet") oCtx.Add "__ProviderArchitecture", RegType Set oLocator = CreateObject("Wbemscripting.SWbemLocator") Set oReg = oLocator.ConnectServer("", "root/default", "", "", , , , oCtx).Get("StdRegProv") Set oInParams = oReg.Methods_("GetDWORDValue").InParameters oInParams.hDefKey = RootKey oInParams.sSubKeyName = Key oInParams.sValueName = Value Set oOutParams = oReg.ExecMethod_("GetDWORDValue", oInParams, , oCtx) RegReadDWORD = oOutParams.uValue End Function

Usando VB.NET, C # o VBScript, ¿cómo puedo verificar si la característica de compatibilidad de administración de IIS 6 y sus subfunciones han sido instaladas en una máquina que ejecuta IIS 7.x?