<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Daniel Martín's blog : Component-Based Servicing (CBS)</title><link>http://msmvps.com/blogs/dmartin/archive/tags/Component-Based+Servicing+_2800_CBS_2900_/default.aspx</link><description>Tags: Component-Based Servicing (CBS)</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Mecanismos de protección de integridad en Windows 2000/XP/Vista y 7: Windows File Protection y Windows Resource Protection</title><link>http://msmvps.com/blogs/dmartin/archive/2009/06/07/windo.aspx</link><pubDate>Sun, 07 Jun 2009 16:36:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1694452</guid><dc:creator>dmartin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1694452</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1694452</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2009/06/07/windo.aspx#comments</comments><description>&lt;p&gt;Desde que sali&amp;oacute; a la luz Windows Vista, y ahora con las versiones preliminares de Windows 7, me he dado cuenta de que el n&amp;uacute;mero de problemas&amp;nbsp;cuya soluci&amp;oacute;n&amp;nbsp;implica el registro de una DLL (mediante el comando&lt;em&gt; regsvr32 nombreDLL&lt;/em&gt;) ha descendido notablemente en estos dos &amp;uacute;ltimos sistemas operativos. Una de las causas de esto, para m&amp;iacute;,&amp;nbsp;es la inclusi&amp;oacute;n de &lt;em&gt;Windows Resource Protection&lt;/em&gt; (WRP), mecanismo que garantiza la integridad de los componentes vitales del sistema operativo y que supone una tremenda mejora con respecto a &lt;em&gt;Windows File Protection&lt;/em&gt; (WFP), sistema de protecci&amp;oacute;n de archivos de sistema presente en Windows 2000 y XP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Windows File Protection&lt;/em&gt; (WFP)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Windows 2000 y XP incorporaron una caracter&amp;iacute;stica denominada WFP (&lt;em&gt;Windows File Protection&lt;/em&gt;), encargada de proteger los archivos m&amp;aacute;s importantes del sistema operativo para evitar que sean modificados o eliminados.&lt;/p&gt;
&lt;p&gt;Su funcionamiento se basa en uno o varios hilos de tipo centinela residentes en el proceso Winlogon e implementados en la DLL Sfc_os.dll. Es decir,&amp;nbsp;estos hilos&amp;nbsp;est&amp;aacute;n al tanto de cualquier tipo de modificaci&amp;oacute;n que se realice sobre directorios del sistema (t&amp;iacute;picamente \System32 y \System32\drivers). Si hubiera cambiado alguna DLL de estos directorios, se&amp;nbsp;registra dicho suceso en una cola destinada a tal efecto. En ese momento se se&amp;ntilde;aliza un &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms686211(VS.85).aspx"&gt;evento&lt;/a&gt; que despierta a otro hilo encargado de realizar la verificaci&amp;oacute;n del correspondiente archivo y su recuperaci&amp;oacute;n&amp;nbsp;desde la cache (carpeta oculta&amp;nbsp;\WINDOWS\System32\dllcache). Si no estuviera en cache, se mostrar&amp;aacute; una interfaz al usuario inform&amp;aacute;ndole de tal situaci&amp;oacute;n e invit&amp;aacute;ndole a introducir el CD de Windows 2000/XP para intentar recuperar la versi&amp;oacute;n original del archivo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Windows Resource Protection&lt;/em&gt; (WRP)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La llegada de Windows Vista&amp;nbsp;supuso&amp;nbsp;que la estructura interna del sistema operativo cambiara radicalmente. Ahora el sistema operativo&amp;nbsp;est&amp;aacute; formado por componentes,&amp;nbsp;claves de Registro, manifiestos XML y ficheros binarios,&amp;nbsp;entre otras cosas, por lo que la aproximaci&amp;oacute;n empleada en versiones anteriores de Windows ya no pod&amp;iacute;a seguir siendo v&amp;aacute;lida. Este aspecto puede ser interpretado como una ventaja, pues si se desarrolla un sistema de protecci&amp;oacute;n para cada uno de los componentes del sistema operativo, ya no solo estaremos protegiendo ejecutables y DLL, como en Windows 2000/XP, sino que estaremos protegiendo tambi&amp;eacute;n claves de Registro y otro tipo de recursos que son igualmente vitales para el correcto funcionamiento del equipo. Este sistema de protecci&amp;oacute;n recibi&amp;oacute; el nombre de &lt;em&gt;Windows Resource Protection&lt;/em&gt; (WRP).&lt;/p&gt;
&lt;p&gt;Cada uno de los componentes que conforman el sistema operativo Windows Vista/Windows 7 contiene un fichero denominado manifiesto. Un manifiesto es un fichero de tipo XML que contiene informaci&amp;oacute;n espec&amp;iacute;fica sobre el componente, es decir,&amp;nbsp;archivos que lo componen, archivos de los que depende, claves de Registro, privilegios con los que se ejecutar&amp;aacute; por defecto, idioma, etc. Uno de estos posibles par&amp;aacute;metros (etiquetas XML) es la protecci&amp;oacute;n del recurso en cuesti&amp;oacute;n, etiqueta &amp;lt;systemProtection&amp;gt;&amp;lt;/systemProtection&amp;gt;.&amp;nbsp;Existen distintos valores&amp;nbsp;posibles&amp;nbsp;para el par&amp;aacute;metro &lt;em&gt;behavior&lt;/em&gt; (comportamiento) de esa etiqueta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;readOnlyIgnoreWrites:&lt;/strong&gt; El recurso solo puede ser modificado por el sistema operativo, durante una instalaci&amp;oacute;n (servicio TrustedInstaller). Cualquier intento de escritura por parte de una aplicaci&amp;oacute;n ser&amp;aacute; descartado; es decir, se le informar&amp;aacute; de que la escritura se realiz&amp;oacute; con &amp;eacute;xito pero el fichero no se ver&amp;aacute; modificado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;readOnlyFailWrites:&lt;/strong&gt; El recurso solo puede ser modificado por el sistema operativo, durante una instalaci&amp;oacute;n (servicio TrustedInstaller). Cualquier intento de escritura por parte de una aplicaci&amp;oacute;n tendr&amp;aacute; como consecuencia que reciba un error.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSOnlyIgnoreWrites:&lt;/strong&gt; Similar a readOnlyIgnoreWrites, pero las modificaciones las puede hacer cualquier componente del sistema operativo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OSOnlyFailWrites:&lt;/strong&gt; Similar a readOnlyFailWrites, pero las modificaciones las puede hacer cualquier componente del sistema operativo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;applicationVirtualized:&lt;/strong&gt; Cualquier cambio que se haga sobre el recurso supondr&amp;aacute; que el sistema operativo cree una copia privada a la aplicaci&amp;oacute;n que lo ha modificado. El recurso global no se ve modificado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;userVirtualized:&lt;/strong&gt; Similar a applicationVirtualized pero la copia privada es por usuario, no por aplicaci&amp;oacute;n.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En el mismo fichero de manifiesto se indica tambi&amp;eacute;n qu&amp;eacute; descriptor de seguridad usar para dicho componente. Por ejemplo, la carpeta Winsxs de Windows Vista tiene este descriptor de seguridad:&lt;/p&gt;
&lt;li&gt;O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464 &lt;/li&gt;
&lt;li&gt;G:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464 &lt;/li&gt;
&lt;li&gt;D:PAI 
&lt;ul&gt;
&lt;li&gt;(A;OICI;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464) &lt;/li&gt;
&lt;li&gt;(A;OICI;0x1200a9;;;BA) &lt;/li&gt;
&lt;li&gt;(A;OICI;0x1200a9;;;SY) &lt;/li&gt;
&lt;li&gt;(A;OICI;0x1200a9;;;BU)&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;p&gt;Donde S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464 es el SID de TrustedInstaller, un servicio encargado de instalar actualizaciones y componentes en Windows Vista y Windows 7.&lt;/p&gt;
&lt;p&gt;Vamos a explicar un poco el descriptor de seguridad: Las dos primeras l&amp;iacute;neas indican que el propietario (O, de &lt;em&gt;owner&lt;/em&gt;) como el grupo (G, de &lt;em&gt;group&lt;/em&gt;) es TrustedInstaller. La l&amp;iacute;nea D:PAI quiere decir que el DACL es protegido (es decir,&amp;nbsp;que no hereda&amp;nbsp;listas de control de acceso&amp;nbsp;o ACL)&amp;nbsp;y adem&amp;aacute;s&amp;nbsp;se hereda autom&amp;aacute;ticamente. A continuaci&amp;oacute;n se indica que TrustedInstaller tiene acceso total al recurso (FA, de&lt;em&gt; full access&lt;/em&gt;); el grupo de administradores, sistema y usuario (BA, SY y BU, respectivamente) tienen acceso gen&amp;eacute;rico de lectura/escritura. As&amp;iacute; pues, ni siquiera un administrador podr&amp;aacute; modificar el contenido del directorio Winsxs. Tan solo TrustedInstaller, con motivo de la instalaci&amp;oacute;n/desinstalaci&amp;oacute;n de actualizaciones, Service Packs o componentes opcionales de Windows podr&amp;aacute; modificar ese directorio. &lt;/p&gt;
&lt;p&gt;Si quiere saber m&amp;aacute;s sobre ACL y DACL le recomiendo el libro&lt;em&gt; Windows Internals&lt;/em&gt;, escrito por Mark Russinovich y David Solomon,&amp;nbsp;ya sea en su cuarta o su quinta edici&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ve&amp;aacute;moslo con un ejemplo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Abriendo el fichero de manifiesto del componente Bloc de notas de Windows Vista podemos observar entre otras cosas&amp;nbsp;lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;&amp;lt;dependentAssembly&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;assemblyIdentity name=&amp;quot;Microsoft-Windows-Kernel32&amp;quot; version=&amp;quot;6.0.6001.18000&amp;quot; processorArchitecture=&amp;quot;x86&amp;quot; language=&amp;quot;neutral&amp;quot; buildType=&amp;quot;release&amp;quot; publicKeyToken=&amp;quot;31bf3856ad364e35&amp;quot; versionScope=&amp;quot;nonSxS&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dependentAssembly&amp;gt;&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Aqu&amp;iacute; se hace referencia a que Bloc de notas depende del componente Microsoft-Windows-Kernel32 (que contiene entre otras cosas la DLL Kernel32.dll) para funcionar correctamente.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;&amp;lt;systemProtection xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v3&amp;quot; behavior=&amp;quot;readOnlyFailWrites&amp;quot; perUserVirtualization=&amp;quot;Disabled&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Aqu&amp;iacute; se hace referencia a que cualquier intento de escritura sobre el componente Bloc de notas&amp;nbsp;dar&amp;aacute; como resultado un error y no se llevar&amp;aacute; a cabo la modificaci&amp;oacute;n. La virtualizaci&amp;oacute;n est&amp;aacute; desactivada, por tratarse de un componente de Windows.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;&amp;lt;shortCut arguments=&amp;quot;&amp;quot; destinationPath=&amp;quot;$(runtime.documentsSettings)\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories&amp;quot; destinationName=&amp;quot;Notepad.lnk&amp;quot; targetPath=&amp;quot;$(runtime.system32)\notepad.exe&amp;quot; iconPath=&amp;quot;$(runtime.system32)\notepad.exe,0&amp;quot; windowStyle=&amp;quot;normal&amp;quot; workingDirectory=&amp;quot;%HOMEDRIVE%%HOMEPATH%&amp;quot; description=&amp;quot;@%SystemRoot%\system32\Shell32.dll,-22563&amp;quot; displayResource=&amp;quot;$(runtime.system32)\shell32.dll,22051&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Aqu&amp;iacute; se hace referencia a la configuraci&amp;oacute;n del acceso directo al bloc de notas que hay en el men&amp;uacute; Inicio.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;&amp;lt;registryKey keyName=&amp;quot;HKEY_CLASSES_ROOT\Applications\notepad.exe\shell\open\command&amp;quot; owner=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;registryValue name=&amp;quot;&amp;quot; valueType=&amp;quot;REG_EXPAND_SZ&amp;quot; value=&amp;quot;%SystemRoot%\system32\NOTEPAD.EXE %1&amp;quot; operationHint=&amp;quot;replace&amp;quot; owner=&amp;quot;true&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Aqu&amp;iacute; se hace referencia a una de las claves de Registro gobernadas por Bloc de notas, la correspondiente a las asociaciones de ficheros.&lt;/p&gt;
&lt;p&gt;Como puede observar, la integridad del sistema operativo fue uno de los objetivos principales para Microsoft mientras dise&amp;ntilde;aba Windows Vista. La protecci&amp;oacute;n de todos y cada uno de los recursos vitales del sistema operativo mediante &lt;em&gt;Windows Resource Protection&lt;/em&gt; (WRP) hacen que Windows Vista&amp;nbsp;y Windows 7 sean sistemas mucho&amp;nbsp;m&amp;aacute;s estables y robustos que sus predecesores.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1694452" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Component-Based+Servicing+_2800_CBS_2900_/default.aspx">Component-Based Servicing (CBS)</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Funcionamiento/default.aspx">Funcionamiento</category></item><item><title>El caso de la instalación fallida de IIS en Windows Vista</title><link>http://msmvps.com/blogs/dmartin/archive/2009/01/07/el-caso-de-la-instalaci-243-n-fallida-de-iis-en-windows-vista.aspx</link><pubDate>Wed, 07 Jan 2009 16:11:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1658779</guid><dc:creator>dmartin</dc:creator><slash:comments>16</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1658779</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1658779</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2009/01/07/el-caso-de-la-instalaci-243-n-fallida-de-iis-en-windows-vista.aspx#comments</comments><description>&lt;p&gt;El caso de hoy es el de un sistema Windows Vista en el que no era posible instalar el componente IIS (&lt;em&gt;Internet Information Server&lt;/em&gt;), que sirve para publicar p&amp;aacute;ginas web tanto local como remotamente y es un requisito previo a la instalaci&amp;oacute;n de alg&amp;uacute;n que otro programa, como por ejemplo &lt;a target="_blank" href="http://www.microsoft.com/windowsserversystem/virtualserver/"&gt;Virtual Server&lt;/a&gt;. Para instalar componentes opcionales en Vista, como sabr&amp;aacute;, hay que ir a Panel de control, Programas, Instalar o desinstalar componentes de Windows. &lt;/p&gt;
&lt;p&gt;El mensaje de error que aparec&amp;iacute;a era el siguiente:&lt;/p&gt;
&lt;p&gt;&lt;img height="127" width="457" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/Error_5F00_Componentes.PNG" alt="Mensaje de error al intentar instalar IIS" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;Una de las&amp;nbsp;primeras cosas&amp;nbsp;que hay que examinar cuando hay problemas para instalar un componente de Windows, un paquete de idiomas, una actualizaci&amp;oacute;n, un Service Pack, etc. es el fichero C:\Windows\Logs\CBS\CBS.log. Es posible que el registro sea bastante extenso y por ello se haya creado un fichero CBS.persist.log con las entradas m&amp;aacute;s antiguas. En tal caso, es posible que tengamos que examinar este fichero tambi&amp;eacute;n.&lt;/p&gt;
&lt;p&gt;Buscando en el fichero de abajo hacia arriba, encontr&amp;eacute; el error que probablemente estaba abortando la instalaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;2008-12-23 11:57:34, Error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSI&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="mailto:00000012@2008/12/23:10:57:34.500"&gt;00000012@2008/12/23:10:57:34.500&lt;/a&gt; (F) d:\rtm\base\wcp\sil\silp.h(2661): Error STATUS_INVALID_PARAMETER originated in function Windows::Rtl::SystemImplementation::CFile_IRtlFileTearoff::SetAttributes expression: Valid flags check failed: Attributes&lt;br /&gt;[gle=0x80004005]&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Estas l&amp;iacute;neas quieren decir que ha fallado la comprobaci&amp;oacute;n&amp;nbsp;de par&amp;aacute;metros de una funci&amp;oacute;n del servicio de componentes de Vista. Concretamente la funci&amp;oacute;n es SetAttributes, que probablemente tenga como objetivo aplicar ciertos atributos sobre un fichero. La parte &amp;quot;[gle=0x80004005]&amp;quot;&amp;nbsp;(&lt;em&gt;gle&lt;/em&gt; es la funci&amp;oacute;n &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms679360(VS.85).aspx"&gt;GetLastError&lt;/a&gt;) quiere decir que el &amp;uacute;ltimo error surgido durante la ejecuci&amp;oacute;n de dicha funci&amp;oacute;n es un error HRESULT que b&amp;aacute;sicamente quiere decir que el error es inespec&amp;iacute;fico. Obviamente necesitaba informaci&amp;oacute;n mucho m&amp;aacute;s &amp;uacute;til, as&amp;iacute; que examin&amp;eacute; el reporte a partir de ese&amp;nbsp;punto y me encontr&amp;eacute; con esta l&amp;iacute;nea, mucho m&amp;aacute;s interesante:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;2008-12-23 11:57:34, Error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSI&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000011 (F) STATUS_INVALID_PARAMETER #3228437# from Windows::Rtl::SystemImplementation::CFile_IRtlFileTearoff::SetAttributes(Attributes = 2048 (0x00000800))[gle=0xd000000d]&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;El error 0xd000000d&amp;nbsp;quiere decir STATUS_INVALID_PARAMETER pero, &amp;iquest;qu&amp;eacute; atributos se le estaba pasando a la funci&amp;oacute;n? El valor Attributes = 2048 (0x800 en hexadecimal) nos da la clave. Una b&amp;uacute;squeda en el fichero Winddk.h del DDK de Windows devolvi&amp;oacute; el siguiente resultado:&lt;/p&gt;
&lt;p&gt;#define FILE_ATTRIBUTE_COMPRESSED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00000800&lt;/p&gt;
&lt;p&gt;Como ve, el atributo que se estaba pasando es el atributo comprimido. La compresi&amp;oacute;n de ficheros es una caracter&amp;iacute;stica del sistema de ficheros NTFS y no tiene nada que ver con los archivos .zip o .rar. Ya estaba cerca de desvelar el misterio,&amp;nbsp;pero para poder aplicar una soluci&amp;oacute;n necesitaba saber qu&amp;eacute; fichero o ficheros estaban involucrados en el error.&amp;nbsp;Observando minuciosamente&amp;nbsp;el fichero CBS.log me&amp;nbsp;encontr&amp;eacute; con esa informaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;2008-12-23 11:57:49, Info&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSI&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000013 Error STATUS_INVALID_PARAMETER while executing operation SetFileInformation on [l:138{69}]&amp;quot;\??\C:\Windows\System32\inetsrv\config\schema\FX_schema.xml, N/A, N/A&amp;quot;&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Hay que tener en cuenta que el fichero FX_schema.xml no hab&amp;iacute;a sido servido a&amp;uacute;n al directorio C:\Windows\System32\inetsrv\config\schema\ (directorio de instalaci&amp;oacute;n de IIS), pues la instalaci&amp;oacute;n no pudo completarse, por lo que le indiqu&amp;eacute; al usuario que acudiera al almac&amp;eacute;n de componentes (C:\Windows\winsxs) y buscara all&amp;iacute;&amp;nbsp;el componente que contuviera ese fichero FX_schema.xml.&amp;nbsp;El usuario&amp;nbsp;me inform&amp;oacute; de dos resultados:&lt;/p&gt;
&lt;p&gt;amd64_microsoft-windows-iis-sharedlibraries_31bf3856ad364e35_6.0.6000.16386_none_6ad14c4c7044b7ae (estaba sin comprimir)&lt;br /&gt;amd64_microsoft-windows-iis-sharedlibraries_31bf3856ad364e35_6.0.6001.18000_none_6d080e486d2fc882&amp;nbsp;(comprimido, es decir, en color azul).&lt;/p&gt;
&lt;p&gt;El primer resultado es el componente instalado por la versi&amp;oacute;n RTM de Windows Vista; el segundo es el instalado por el Service Pack 1.&lt;/p&gt;
&lt;p&gt;As&amp;iacute; pues, el usuario descomprimi&amp;oacute; la segunda carpeta desde el panel de propiedades, bot&amp;oacute;n Opciones avanzadas, y ya pudo instalar IIS.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Por qu&amp;eacute; estaba comprimida esa carpeta? Ciertamente lo desconozco, pero mi opini&amp;oacute;n es que alg&amp;uacute;n software o el propio usuario lo hizo con el objetivo de ahorrar espacio en disco debido al elevado espacio en disco consumido por el directorio C:\Windows\winsxs en Windows Vista.&amp;nbsp;Como puede leer en &lt;a target="_blank" href="http://blogs.msdn.com/e7/archive/2008/11/19/disk-space.aspx"&gt;este blog&lt;/a&gt; del equipo de Windows, el espacio realmente ocupado es mucho menor y, como ya pudo comprobar,&amp;nbsp;comprimirlo puede tener como consecuencia no poder instalar un componente de Windows.&lt;/p&gt;
&lt;p&gt;&amp;iexcl;Caso cerrado!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizaci&amp;oacute;n (27 de octubre de 2009):&lt;/strong&gt; En seg&amp;uacute;n qu&amp;eacute; casos, puede ser que necesitemos echar un vistazo tambi&amp;eacute;n al fichero de reporte espec&amp;iacute;fico de IIS, a saber, %windir%\iis.log.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1658779" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consultas/default.aspx">Consultas</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Component-Based+Servicing+_2800_CBS_2900_/default.aspx">Component-Based Servicing (CBS)</category></item><item><title>El comando Sfc.exe en Windows Vista</title><link>http://msmvps.com/blogs/dmartin/archive/2008/10/04/el-comando-sfc-exe-en-windows-vista.aspx</link><pubDate>Sat, 04 Oct 2008 15:49:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1647705</guid><dc:creator>dmartin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1647705</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1647705</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2008/10/04/el-comando-sfc-exe-en-windows-vista.aspx#comments</comments><description>&lt;p&gt;Una de las acciones m&amp;aacute;s recomendables cuando nos enfrentamos a cierto tipo de problemas en Windows es comprobar la consistencia de los ficheros del sistema operativo, para asegurarnos de que ning&amp;uacute;n usuario o aplicaci&amp;oacute;n los haya eliminado o modificado con versiones incorrectas. El comando que lleva a cabo&amp;nbsp;todo este proceso recibe el nombre de Sfc.exe (&lt;em&gt;System File Checker&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diferencias entre el comando Sfc.exe en Vista y en versiones anteriores de Windows&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pese a que la sintaxis b&amp;aacute;sica de Sfc.exe se ha mantenido pr&amp;aacute;cticamente inmutable&amp;nbsp;a lo largo del tiempo, los cambios en la arquitectura de Windows Vista han derivado en que la manera de actuar de Sfc.exe ha tenido que cambiar tambi&amp;eacute;n. Mientras que en Windows XP la unidad b&amp;aacute;sica podr&amp;iacute;amos decir que es el fichero, en Windows Vista la unidad b&amp;aacute;sica es el componente. Un componente es un contenedor de recursos, entendiendo por recurso un fichero binario, una clave de Registro, un manifiesto (fichero XML con extensi&amp;oacute;n .manifest), etc. Esta jerarqu&amp;iacute;a ha facilitado enormemente la implementaci&amp;oacute;n de Windows Vista, tanto para el usuario final, como para Microsoft. Sin embargo, hay ocasiones en las que los componentes del sistema operativo, pese a estar protegidos por WRP (&lt;em&gt;Windows Resource Protection&lt;/em&gt;, tema que se tratar&amp;aacute; en un posterior art&amp;iacute;culo), se da&amp;ntilde;an, produciendo comportamientos negativos de lo m&amp;aacute;s variado, como&amp;nbsp;por&amp;nbsp;ejemplo impedir la instalaci&amp;oacute;n de una actualizaci&amp;oacute;n o de&amp;nbsp;un&amp;nbsp;Service Pack. La herramienta Sfc.exe en Windows Vista comprueba la consistencia de&amp;nbsp;dos aspectos del sistema operativo a trav&amp;eacute;s del proceso TrustedInstaller.exe (&amp;quot;Instalador confiable&amp;quot;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los componentes del sistema operativo.&lt;/li&gt;
&lt;li&gt;Los controladores Plug and Play del sistema operativo (almac&amp;eacute;n DMI).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Comprobaci&amp;oacute;n de los componentes del sistema operativo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En primer lugar se debe comentar que Sfc.exe solo puede reparar componentes que no sean del tipo SxS (&lt;em&gt;Side-by-Side&lt;/em&gt;). Este art&amp;iacute;culo no pretende explicar en qu&amp;eacute; consisten los componentes&amp;nbsp;SxS, en la web de MSDN dispone de &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa376414(VS.85).aspx"&gt;informaci&amp;oacute;n&lt;/a&gt; sobre esta funcionalidad que tantos quebraderos de cabeza da a los desarrolladores de aplicaciones. Para determinar si un componente est&amp;aacute; da&amp;ntilde;ado o no, se comprueba su manifiesto y los ficheros que lo forman. Si el manifiesto estuviera da&amp;ntilde;ado o no existiera, el sistema a&amp;uacute;n puede recuperarlo desde el &lt;em&gt;backup&lt;/em&gt;, el directorio %windir%\winsxs\Backup. Si esto ocurre y la recuperaci&amp;oacute;n se realiza con &amp;eacute;xito, el fichero CBS.log del directorio %windir%\Logs\CBS\ registra una l&amp;iacute;nea similar a &amp;quot;[SR] Recovered manifest [...] from backup&amp;quot;.&lt;/p&gt;
&lt;p&gt;Una vez que los manifiestos han sido verificados y, en caso necesario, reparados, se procede a analizar los binarios que forman el componente. Antes de seguir, conviene explicar que un componente puede presentar varios estados en el sistema operativo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ausente: Ni siquiera los manifiestos del componente est&amp;aacute;n presentes en el sistema.&lt;/li&gt;
&lt;li&gt;Resuelto: Los manifiestos est&amp;aacute;n presentes en el equipo, pero los ficheros no.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Staged&lt;/em&gt;: Los ficheros y manifiestos est&amp;aacute;n presentes, pero a&amp;uacute;n no han sido proyectados (es decir, el sistema operativo no los est&amp;aacute; usando).&lt;/li&gt;
&lt;li&gt;Instalado: Los ficheros y manifiestos est&amp;aacute;n correctamente instalados en el sistema.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para saber si el componente que est&amp;aacute; siendo analizado por Sfc est&amp;aacute; en el estado &lt;em&gt;staged&lt;/em&gt; o alguno m&amp;aacute;s avanzado, se examina la clave de Registro HKEY_LOCAL_MACHINE\COMPONENTS\DerivedData\Components. Los valores que comienzan por &amp;quot;c!&amp;quot; hacen referencia a componentes y los que comienzan por &amp;quot;f!&amp;quot; hacen referencia a archivos.&lt;/p&gt;
&lt;p&gt;El &lt;em&gt;hash&lt;/em&gt; del fichero se compara con el que est&amp;aacute; presente en el manifiesto y, en caso de que no coincidieran, se intenta recuperar el binario desde el almac&amp;eacute;n (%windir%\winsxs\). Si tampoco fuera posible extraerlo de ah&amp;iacute; o si tambi&amp;eacute;n estuviera corrupto, se recurre de nuevo al directorio %windir%\winsxs\Backup\.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comprobaci&amp;oacute;n de los controladores Plug and Play&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En esta fase se verifica el estado de los controladores Plug and Play que haya instalados en el sistema. En primer lugar, la lista de dichos controladores se enumera desde la clave de Registro HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\PnPLockDownFiles. La comprobaci&amp;oacute;n de cada uno de los controladores se realiza contra el correspondiente cat&amp;aacute;logo presente en el almac&amp;eacute;n de cat&amp;aacute;logos (&lt;em&gt;Catroot&lt;/em&gt;). Si el controlador estuviera corrupto, se intenta extraer una copia desde el almac&amp;eacute;n de controladores (%windir%\inf), almac&amp;eacute;n&amp;nbsp;que contiene los controladores incluidos de serie en una instalaci&amp;oacute;n de Windows Vista.&lt;/p&gt;
&lt;p&gt;Como ve, el comando Sfc.exe funciona de manera completamente diferente en Windows XP y en Windows Vista. Debido a la nueva arquitectura basada en componentes,&amp;nbsp;en ocasiones esta utilidad va a reportarnos en el fichero CBS.log que no ha sido capaz de solucionar los problemas de consistencia del sistema operativo. Si el almac&amp;eacute;n de componentes estuviera corrupto, puede probar con la utilidad &lt;a target="_blank" href="http://support.microsoft.com/kb/947821/es"&gt;System Update Readiness&lt;/a&gt;, si es que Windows Update no se la ha ofrecido ya. Si a&amp;uacute;n as&amp;iacute; siguiera el problema, habr&amp;aacute; que examinar con paciencia el fichero CBS.log y determinar el&amp;nbsp;lugar exacto donde est&amp;aacute; la inconsistencia. A partir de ah&amp;iacute;, podr&amp;iacute;a intentarse la extracci&amp;oacute;n desde la imagen WIM presente en el DVD de Windows Vista, proceso que, si bien es arduo y laborioso, nos puede ahorrar una instalaci&amp;oacute;n limpia de Windows Vista.&amp;nbsp;Quiz&amp;aacute; explique este procedimiento en un pr&amp;oacute;ximo art&amp;iacute;culo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1647705" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Component-Based+Servicing+_2800_CBS_2900_/default.aspx">Component-Based Servicing (CBS)</category></item></channel></rss>