<?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</title><link>http://msmvps.com/blogs/dmartin/default.aspx</link><description>Este blog trata de Windows: técnicas avanzadas de solución de problemas y detalles de funcionamiento que espero sean de utilidad tanto a desarrolladores como a administradores de sistemas.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Cómo cambiar un icono fotorrealista de dispositivo en Windows 7</title><link>http://msmvps.com/blogs/dmartin/archive/2011/07/22/c-243-mo-cambiar-un-icono-fotorrealista-de-dispositivo-en-windows-7.aspx</link><pubDate>Fri, 22 Jul 2011 21:55:06 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1796611</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=1796611</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1796611</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/07/22/c-243-mo-cambiar-un-icono-fotorrealista-de-dispositivo-en-windows-7.aspx#comments</comments><description>&lt;p&gt;Una de las novedades de Windows 7 con respecto a sistemas anteriores es su nuevo centro de dispositivos e impresoras, donde podemos visualizar rápidamente un listado de los dispositivos que tenemos conectados a nuestra máquina, así como información de utilidad sobre ellos (fabricante, descripción, página de soporte, etc.). Además, algunos dispositivos pueden acompañarse de un icono fotorrealista que hace que los identifiquemos mucho más rápidamente. Esta información sobre los dispositivos la genera el fabricante y la pone a disposición de los usuarios a través de &lt;em&gt;Windows Metadata and Internet Services&lt;/em&gt; (WMIS). Windows 7 incorpora un componente cliente que contacta con este servicio y descarga información actualizada sobre los dispositivos conectados sin que el usuario tenga que hacer nada.&lt;/p&gt;  &lt;p&gt;A pesar de que esta información está pensada para que la proporcione el fabricante, puede que nos apetezca cambiar alguno de los iconos por otro de más calidad, o bien más apropiado para el dispositivo en cuestión. En este artículo explicaré cómo usar una herramienta de Microsoft, &lt;em&gt;Device and Printers Metadata Authoring Wizard&lt;/em&gt;, que permite crear paquetes de &amp;quot;metadatos” sobre cualquier dispositivo conectado a la máquina. Estos paquetes incluyen información sobre el dispositivo (modelo, fabricante, descripción, etc.), así como un icono fotorrealista que se mostrará en el centro de dispositivos e impresoras. Es la aplicación que usan los fabricantes de dispositivos para crear y probar localmente los paquetes de información e iconos, antes de publicarlos en los servicios web de Microsoft.&lt;/p&gt;  &lt;p&gt;Podemos descargar este asistente desde la siguiente dirección: &lt;a title="http://download.microsoft.com/download/F/5/4/F54F4AF9-737A-4EE6-B3F8-BEF68990CB62/Devices-and-Printers-Metadata-Authoring-Wizard.msi" href="http://download.microsoft.com/download/F/5/4/F54F4AF9-737A-4EE6-B3F8-BEF68990CB62/Devices-and-Printers-Metadata-Authoring-Wizard.msi"&gt;http://download.microsoft.com/download/F/5/4/F54F4AF9-737A-4EE6-B3F8-BEF68990CB62/Devices-and-Printers-Metadata-Authoring-Wizard.msi&lt;/a&gt; Una vez instalada la aplicación, abrimos &lt;em&gt;Inicio&lt;/em&gt;, &lt;em&gt;Dispositivos e impresoras&lt;/em&gt; y seleccionamos con el botón derecho el dispositivo en cuestión. Veremos una nueva opción en el menú contextual, &lt;em&gt;Create metadata package&lt;/em&gt;, tal y como se muestra en la siguiente captura:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/4527.Create_5F00_Metadata_5F00_4B1E22DF.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Create_Metadata" border="0" alt="Create_Metadata" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/7127.Create_5F00_Metadata_5F00_thumb_5F00_25F0B2A6.png" width="399" height="326" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esta opción abre un asistente como el que se muestra en la siguiente imagen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/0027.Wizard_5F00_Device_5F00_2A86BD60.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Wizard_Device" border="0" alt="Wizard_Device" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/0334.Wizard_5F00_Device_5F00_thumb_5F00_31E27D0D.png" width="764" height="540" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El asistente tiene diversas pestañas para poder rellenar, entre otras cosas, el icono del dispositivo, su descripción, el ID de hardware asociado, la categoría a la que pertenece o los idiomas en los que mostrar la información. En este artículo vamos a centrarnos en cambiar el icono sin entrar en detalle sobre el resto de información; sin embargo, recomiendo que experimente con el resto de campos por su cuenta.&lt;/p&gt;  &lt;p&gt;En la pestaña &lt;em&gt;Icon&lt;/em&gt; podemos agregar el icono fotorrealista que hayamos creado para nuestro dispositivo. Para crear un icono fotorrealista hay que seguir ciertas pautas para que sea considerado válido (a este tipo de iconos se les conoce como iconos “estilo Windows Aero”). Estas pautas se citan en el propio asistente (formato .ico, número de formatos de imagen requeridos), así como de manera ampliada en esta dirección web: &lt;a title="http://msdn.microsoft.com/en-us/library/aa511280.aspx" href="http://msdn.microsoft.com/en-us/library/aa511280.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa511280.aspx&lt;/a&gt; En la documentación de prácticamente cualquier herramienta de diseño gráfico hay información paso a paso sobre cómo crear iconos con estilo Windows Aero. Por ejemplo, si se usa Axialis IconWorkShop se puede usar esta documentación para crear el icono fácilmente a partir de una imagen: &lt;a title="http://www.axialis.com/docs/iw/Introducing_Vista_Icons.htm" href="http://www.axialis.com/docs/iw/Introducing_Vista_Icons.htm"&gt;http://www.axialis.com/docs/iw/Introducing_Vista_Icons.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En la pestaña &lt;em&gt;Associations&lt;/em&gt; debemos seleccionar aquellos ID de hardware que queremos asociar con el paquete de “metadatos”. Puede ver los ID de hardware en Administrador de disposivos, haciendo doble clic sobre el dispositivo, pestaña &lt;em&gt;Detalles&lt;/em&gt;, propiedad &lt;em&gt;Id. de hardware&lt;/em&gt;. Otra pestaña importante es la pestaña &lt;em&gt;Options&lt;/em&gt;, donde tendremos que seleccionar el idioma que queremos asociar con este paquete. Podemos crear varios paquetes de información, cada uno asociado con un idioma, y el sistema operativo decidirá automáticamente cuál utilizar en cada caso.&lt;/p&gt;  &lt;p&gt;Para concluir, en la pestaña &lt;em&gt;Finish&lt;/em&gt; deberemos seleccionar la casilla correspondiente para almacenar el paquete en el almacén de Windows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/4087.Copy_5F00_to_5F00_Store_5F00_1BCBEBAE.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Copy_to_Store" border="0" alt="Copy_to_Store" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/6165.Copy_5F00_to_5F00_Store_5F00_thumb_5F00_73B93C8E.png" width="527" height="91" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Al pulsar sobre &lt;em&gt;Finish&lt;/em&gt;, si todo ha ido bien, aparecerá un cuadro de Control de cuentas de usuario pidiéndonos confirmación o privilegios administrativos y el icono del dispositivo cambiará inmediatamente. Además de en el almacén de “metadatos” sobre dispositivos (%ProgramData%\Microsoft\Windows\DeviceMetadata\&lt;em&gt;Idioma&lt;/em&gt;), se guarda también una copia del fichero .devicemetadata-ms en la carpeta que hayamos seleccionado en la pestaña Finish (por defecto, la carpeta Documentos). Conviene tener una copia de seguridad por si en algún momento un nuevo controlador o el propio servicio web WMIS “machacan” esta información que hemos personalizado localmente.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1796611" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Shell/default.aspx">Shell</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Configurar la opción de abrir ítems con un simple clic a través de la API de Windows y de un script VBS</title><link>http://msmvps.com/blogs/dmartin/archive/2011/07/04/configurar-la-opci-243-n-de-abrir-237-tems-con-un-simple-clic-a-trav-233-s-de-la-api-de-windows-y-de-un-script-vbs.aspx</link><pubDate>Mon, 04 Jul 2011 22:22:37 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1795704</guid><dc:creator>dmartin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1795704</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1795704</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/07/04/configurar-la-opci-243-n-de-abrir-237-tems-con-un-simple-clic-a-trav-233-s-de-la-api-de-windows-y-de-un-script-vbs.aspx#comments</comments><description>&lt;p&gt;Un usuario del foro preguntaba si es posible cambiar a la opción de abrir archivos o carpetas con un simple clic, que está situada en Explorador de Windows, menú &lt;em&gt;Organizar&lt;/em&gt;, &lt;em&gt;Opciones de carpeta y búsqueda&lt;/em&gt;, pestaña &lt;em&gt;General&lt;/em&gt;. El objetivo principal era incluir este automatismo como parte del proceso de instalación de un programa.&lt;/p&gt;  &lt;p&gt;Cuando se plantean este tipo de preguntas, siempre pienso inmediatamente en el usuario de esa aplicación y en cómo tras instalarla considero que ha perdido parte del control de su máquina. No es buena idea que un programa tome la decisión unilateral de modificar configuraciones personales del usuario. En primer lugar habría que volver a pensar en por qué esa aplicación requiere un cambio en una configuración personal para funcionar correctamente. Si el cambio fuese estrictamente necesario y justificado, lo ideal sería indicarle esto al usuario a través de un mensaje y seguidamente dirigirle al panel de Opciones de carpeta (&lt;em&gt;control.exe folders&lt;/em&gt;) para sea él personalmente el que cambie la configuración requerida. De esta manera, el usuario es consciente del cambio que ha realizado en su configuración personal, si es que finalmente decide llevarla a cabo.&lt;/p&gt;  &lt;p&gt;Microsoft es consciente de que muchas aplicaciones interfieren con la configuración personal del usuario y por ello, especialmente desde Windows 7, ha ido restringiendo ciertas partes del sistema para que no dispongan de acceso a través de la interfaz de programación de Windows. Para el caso que nos ocupa, aún disponemos del acceso a una API que nos sirve para lo que estamos busando: &lt;a href="http://msdn.microsoft.com/en-us/library/bb762200(v=vs.85).aspx" target="_blank"&gt;SHGetSetSettings&lt;/a&gt;. Como se indica en la página de documentación, si la llamamos con el segundo parámetro establecido en SSF_DOUBLECLICKINWEBVIEW podremos cambiar esta configuración del explorador.&lt;/p&gt;  &lt;p&gt;El resultado final de la llamada anterior es la modificación del valor binario &lt;em&gt;ShellState&lt;/em&gt; de la clave de registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer. A simple vista este valor de registro tiene un aspecto un tanto críptico, pero voy a detallar a continuación su estructura para verlo todo más claro.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Cómo interpretar el valor de registro ShellState?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El primer parámetro de la función SHGetSetSettings es una estructura de nombre &lt;a href="http://msdn.microsoft.com/en-us/library/bb759788(v=vs.85).aspx" target="_blank"&gt;SHELLSTATE&lt;/a&gt;, documentada en MSDN, y presente en el fichero de cabecera Shlobj.h. Esta estructura está formada por un conjunto de &lt;em&gt;flags&lt;/em&gt; binarios, cada uno de los cuales controla un determinado aspecto de la configuración del explorador. SHELLSTATE es una estructura bastante antigua, ciertos campos ya no se aplican a versiones recientes de Windows, y además es una estructura propensa a cambios (cada versión de Windows suele introducir un par de nuevos &lt;em&gt;flags &lt;/em&gt;y algunos de sus valores se han transladado a otros sitios del registro, más fácilmente controlables mediante directivas). Por esta razón, tanto el valor de registro como su API asociada podrían dejar de funcionar en un futuro sin previo aviso.&lt;/p&gt;  &lt;p&gt;Para que esta información persista en el tiempo, la estructura SHELLSTATE junto con su tamaño se almacenan en el valor de registro &lt;em&gt;ShellState&lt;/em&gt; antes mencionado. Si lo abrimos en Editor del Registro veremos que comienza por 24 00 00 00. Estos primeros 4 bytes (un entero sin signo) indican el tamaño total, es decir, 36 bytes (nótese que el editor nos está mostrando el dato en hexadecimal). Después del tamaño, le sigue la estructura SHELLSTATE en sí, escrita en bloques de 1 byte de derecha a izquierda. Como vemos en la documentación de MSDN, el &lt;em&gt;flag&lt;/em&gt; que nos interesa modificar es fDoubleClickInWebView, el sexto bit. Si lo establecemos en cero, activaremos la opción de abrir ítems con un simple clic; si lo establecemos en 1, los abriremos con un doble clic (comportamiento por defecto).&lt;/p&gt;  &lt;p&gt;Por tanto, para respetar el resto de bits de la estructura ShellState lo que podemos hacer es anotar el valor hexadecimal del quinto byte del valor de registro (recuerde que los bytes del primero al cuarto inclusive expresan el tamaño del valor de registro). Con dicho valor anotado, abrimos la calculadora de Windows y la configuramos en modo “Programador” y “hexadecimal”. Introducimos el valor que hemos anotado en el paso anterior y pulsamos “And”, “20”, “Not”, “=”. (20 es el valor hexadecimal correspondiente a poner un 1 binario en la sexta posición). Si en vez de poner el correspondiente bit a 1, queremos ponerlo a 0, la operación que hay que hacer es “Or”, “20”, “=”. Hay más información sobre cómo hacer operaciones a nivel de bit en &lt;a href="http://en.wikipedia.org/wiki/Bitwise_operation" target="_blank"&gt;Wikipedia&lt;/a&gt;, por ejemplo.&lt;/p&gt;  &lt;p&gt;Para terminar, dejo una posible implementación en lenguaje Visual Basic Script:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;&amp;#39;      &lt;br /&gt;&amp;#39; Small example of VBScript code that switches between &amp;quot;double click to open items&amp;quot; and &amp;quot;single click to open       &lt;br /&gt;&amp;#39; items&amp;quot; by editing the ShellState binary value in the registry.       &lt;br /&gt;&amp;#39; It depends on the layout of the SHELLSTATE structure, so it might cease to work in future versions of       &lt;br /&gt;&amp;#39; Windows.       &lt;br /&gt;&amp;#39;       &lt;br /&gt;&amp;#39; For unmanaged code, the best way to achieve this is using the SHGetSetSettings function with the       &lt;br /&gt;&amp;#39; second parameter set to SSF_DOUBLECLICKINWEBVIEW       &lt;br /&gt;&amp;#39;       &lt;br /&gt;&amp;#39; (c) Daniel Martín       &lt;br /&gt;&amp;#39;       &lt;br /&gt;Const HKEY_CURRENT_USER = &amp;amp;H80000001       &lt;br /&gt;strComputer = &amp;quot;.&amp;quot;       &lt;br /&gt;Set objRegistry = GetObject(&amp;quot;winmgmts:{impersonationLevel=impersonate}!\\&amp;quot; &amp;amp; strComputer &amp;amp; &amp;quot;\root\default:StdRegProv&amp;quot;)       &lt;br /&gt;Set objWMIService = GetObject(&amp;quot;winmgmts:&amp;quot;&amp;amp; &amp;quot;{impersonationLevel=impersonate}!\\&amp;quot; &amp;amp; strComputer &amp;amp; &amp;quot;\root\cimv2&amp;quot;)       &lt;br /&gt;Set objShell = CreateObject(&amp;quot;Wscript.Shell&amp;quot;) &lt;/p&gt;    &lt;p&gt;strPath = &amp;quot;Software\Microsoft\Windows\CurrentVersion\Explorer&amp;quot;      &lt;br /&gt;strBinValue = &amp;quot;ShellState&amp;quot;&lt;/p&gt;    &lt;p&gt;objRegistry.GetBinaryValue HKEY_CURRENT_USER, strPath, strBinValue, uBinaryShellState      &lt;br /&gt;uBinaryNewShellState = uBinaryShellState &amp;#39; Keep user settings       &lt;br /&gt;uBinaryNewShellState(4) = uBinaryShellState(4) Xor 32 &amp;#39; But toggle the fDoubleClickInWebView bit       &lt;br /&gt;objRegistry.SetBinaryValue HKEY_CURRENT_USER, strPath, strBinValue, uBinaryNewShellState&lt;/p&gt;    &lt;p&gt;If (Return = 0) And (Err.Number = 0) Then      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If ((uBinaryShellState(4) Or 32) = uBinaryShellState(4)) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MsgBox &amp;quot;Single click to open items was applied successfully. Restarting Explorer...&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MsgBox &amp;quot;Double click to open items was applied successfully. Restarting Explorer...&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set colProcessList = objWMIService.ExecQuery(&amp;quot;SELECT * FROM Win32_Process WHERE Name = &amp;#39;explorer.exe&amp;#39;&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For Each objProcess in colProcessList       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; objProcess.Terminate(1)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Next       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objShell.Run &amp;quot;explorer.exe&amp;quot;       &lt;br /&gt;Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MsgBox &amp;quot;An error occurred: &amp;quot; + Err.Number       &lt;br /&gt;End If&lt;/p&gt;&lt;/code&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1795704" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Shell/default.aspx">Shell</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consultas/default.aspx">Consultas</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/WMI/default.aspx">WMI</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Explorer/default.aspx">Explorer</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/API+de+Windows/default.aspx">API de Windows</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Scripting/default.aspx">Scripting</category></item><item><title>¿Qué hacer en caso de que alguna actualización de Windows nos impida arrancar el equipo?</title><link>http://msmvps.com/blogs/dmartin/archive/2011/06/11/191-qu-233-hacer-en-caso-de-que-alguna-actualizaci-243-n-de-windows-nos-impida-arrancar-el-equipo.aspx</link><pubDate>Sat, 11 Jun 2011 23:17:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1794569</guid><dc:creator>dmartin</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1794569</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1794569</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/06/11/191-qu-233-hacer-en-caso-de-que-alguna-actualizaci-243-n-de-windows-nos-impida-arrancar-el-equipo.aspx#comments</comments><description>&lt;p&gt;Pese a que Microsoft dedica bastante tiempo a probar sus actualizaciones en un enorme n&amp;uacute;mero de configuraciones diferentes, es posible que nos encontremos con un sistema al que le hemos intentado instalar una actualizaci&amp;oacute;n pero el proceso falla por alg&amp;uacute;n motivo, entrando el sistema en un bucle sin f&amp;iacute;n y por lo tanto no se puede arrancar el equipo.&lt;/p&gt;
&lt;p&gt;Para solucionar este tipo de problemas, debemos tener en cuenta que lo m&amp;aacute;s complicado no es conseguir arrancar el equipo, sino dejarlo en un estado consistente. B&amp;aacute;sicamente esto quiere decir que la informaci&amp;oacute;n que mantiene el sistema operativo sobre cada uno de sus componentes se corresponda con lo que existe en realidad, n&amp;uacute;meros de versi&amp;oacute;n incluidos. As&amp;iacute; pues, lo primero que recomiendo si nos encontramos con un problema de este tipo es intentar &lt;em&gt;restaurar el sistema&lt;/em&gt;. Para ello, arrancamos con el DVD de Windows 7 en la unidad y seleccionamos la opci&amp;oacute;n &amp;ldquo;Reparar el equipo&amp;rdquo;. Cuando se nos presente el cuadro de di&amp;aacute;logo con las opciones de reparaci&amp;oacute;n, seleccionamos Restaurar sistema y seleccionamos un punto anterior a la instalaci&amp;oacute;n de la actualizaci&amp;oacute;n problem&amp;aacute;tica. Este procedimiento deja el sistema en un estado consistente.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Qu&amp;eacute; hacer si Restaurar sistema no consigue solucionar el problema o bien no hay un punto de restauraci&amp;oacute;n disponible (Windows crea un punto de restauraci&amp;oacute;n autom&amp;aacute;tico antes de cada instalaci&amp;oacute;n de actualizaci&amp;oacute;n)?&lt;/p&gt;
&lt;p&gt;En esta situaci&amp;oacute;n mi consejo es que, debido al dise&amp;ntilde;o actual y la arquitectura de componentes de Windows, pese a que consigamos arrancar el sistema va a ser tarea casi imposible dejarlo en un estado consistente. Este hecho probablemente causar&amp;aacute; problemas similares con actualizaciones futuras. Por tanto, debemos centrarnos en conseguir arrancar el sistema y salvaguardar los datos de importancia antes de proceder a reinstalar el sistema operativo.&lt;/p&gt;
&lt;p&gt;Para conseguir iniciar el sistema, podemos probar a arrancar nuevamente con el DVD de Windows 7, seleccionamos &amp;ldquo;Reparar el equipo&amp;rdquo; y abrimos una ventana de comandos. En ella, teclearemos el siguiente comando:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism.exe /Image:X:\ /Cleanup-Image /RevertPendingActions&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;(Donde &amp;ldquo;X&amp;rdquo; es la unidad del sistema que no puede arrancar).&lt;/p&gt;
&lt;p&gt;Este comando lo que hace es revertir todas las acciones pendientes que se hayan generado durante la instalaci&amp;oacute;n de la actualizaci&amp;oacute;n. Estas acciones pendientes se ejecutan tras el reinicio de la m&amp;aacute;quina y los eventos relacionados quedan registrados en los ficheros %windir%\winsxs\poqexec.log, %windir%\winsxs\pending.xml y %windir%\winsxs\pending.xml.bad. Para que un paquete de actualizaci&amp;oacute;n se instale correctamente, deben ejecutarse y finalizar con &amp;eacute;xito todas las acciones que tenga pendientes, por lo que si alguna falla podemos encontrarnos en una situaci&amp;oacute;n de bucle infinito. En actualizaciones grandes como puede ser un &lt;em&gt;service pack&lt;/em&gt;, hay un periodo de la instalaci&amp;oacute;n durante el cual no puede producirse ning&amp;uacute;n fallo o corte de energ&amp;iacute;a. Si ocurriera, casi con total probabilidad el sistema entrar&amp;aacute; en un bucle infinito tras el reinicio. En Windows 7 esta &amp;ldquo;ventana fat&amp;iacute;dica&amp;rdquo; de tiempo se ha reducido bastante, lo que unido a la estabilidad del servicio de componentes y del instalador de actualizaciones han conseguido reducir enormemente este tipo de problemas. Si nos enfrentamos a un equipo con estos s&amp;iacute;ntomas deber&amp;iacute;amos sospechar siempre de alguna inconsistencia de base en el servicio de componentes de Windows, corrupci&amp;oacute;n en el disco o alg&amp;uacute;n otro tipo de fallo de hardware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizaci&amp;oacute;n (15/6/2011):&lt;/strong&gt; Si se quiere evitar reinstalar el sistema una vez recuperado el arranque correcto de la m&amp;aacute;quina, el &lt;em&gt;Windows Server Core Team&lt;/em&gt; de Microsoft nos presenta un m&amp;eacute;todo para devolver el sistema a un estado consistente de nuevo, usando la herramienta Dism.exe para instalar y posteriormente desinstalar el paquete fallido. Aqu&amp;iacute; puede encontrar m&amp;aacute;s informaci&amp;oacute;n (en ingl&amp;eacute;s): &lt;a href="http://blogs.technet.com/b/askcore/archive/2011/05/10/supported-workaround-for-torn-state-installations-on-windows-7-sp1.aspx"&gt;http://blogs.technet.com/b/askcore/archive/2011/05/10/supported-workaround-for-torn-state-installations-on-windows-7-sp1.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1794569" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consejos/default.aspx">Consejos</category><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/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Arranque/default.aspx">Arranque</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Qué formas hay de ocultar una acción (verbo) del menú contextual</title><link>http://msmvps.com/blogs/dmartin/archive/2011/05/18/qu-233-formas-hay-de-ocultar-una-acci-243-n-verbo-del-men-250-contextual.aspx</link><pubDate>Wed, 18 May 2011 22:34:18 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1793473</guid><dc:creator>dmartin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1793473</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1793473</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/05/18/qu-233-formas-hay-de-ocultar-una-acci-243-n-verbo-del-men-250-contextual.aspx#comments</comments><description>&lt;p&gt;Al hacer clic con el botón derecho del ratón sobre cualquier ítem del &lt;em&gt;shell&lt;/em&gt; (ya sea un fichero o no), el sistema nos muestra un menú contextual formado por una serie de acciones (verbos) entre las que se incluyen un cierto número de acciones por defecto (cortar, copiar, pegar, renombrar, propiedades, etc.), así como ciertas acciones añadidas por programas de terceros. Puesto que un requisito para lograr una buena usabilidad podría ser un menú contextual simple y organizado, un usuario preguntaba cómo se pueden ocultar selectivamente estas acciones de la interfaz de usuario, pero sin eliminarlas del sistema.&lt;/p&gt;  &lt;p&gt;Hay unas cuantas formas para lograr esto, agregando algunos valores al registro de Windows:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Valor de registro “Extended”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si se agrega al registro, justo en la sección donde se define el verbo, un valor de tipo cadena de nombre “Extended” y contenido vacío, el sistema entiende que se trata de una acción que o bien raramente se usa, o bien solo suelen usarla los usuarios avanzados. De tal forma que para mostrarla es necesario mantener pulsada la tecla Mayúsculas mientras se abre el menú contextual. Un ejemplo de esto es la acción “Abrir consola de comandos aquí” del menú contextual de Windows 7 (HKEY_CLASSES_ROOT\Directory\shell\cmd).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Valor de registro “ProgrammaticAccessOnly”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Este valor es nuevo en Windows Vista. Sirve para indicar que dicha acción no está pensada para que la ejecuten los usuarios a través de la interfaz gráfica. Solamente se puede invocar mediante programación. Un ejemplo de ello es el verbo “explorar” (&lt;em&gt;explore&lt;/em&gt;), que está presente en el registro, por ejemplo en la clave HKEY_CLASSES_ROOT\Folder\shell\explore, pero que no aparece en el menú contextual.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Valor de registro “LegacyDisable”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Este valor indica que la acción está presente simplemente por motivos de compatibilidad con algún programa antiguo y no debería usarse de ahora en adelante.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Valor de registro “SuppressionPolicy”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Esta opción oculta el verbo si se ha aplicado al sistema una determinada directiva. Las directivas pueden ser de dos tipos: una restricción de licencia o una directiva de grupo de toda la vida. Podemos ver una ejemplo de esto en la clave de registro HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage. Ahí encontramos un valor de nombre “SuppressionPolicy” con contenido a 0x4000003c. ¿Qué quiere decir esto? El valor SuppressionPolicy contiene un valor de 32 bits que representa la restricción que, de estar aplicada, queremos que oculte el verbo del menú contextual. Es un valor del tipo enumerado &lt;a href="http://msdn.microsoft.com/en-us/library/bb762534(VS.85).aspx" target="_blank"&gt;RESTRICTIONS&lt;/a&gt; que se le pasa como parámetro a la API &lt;a href="http://msdn.microsoft.com/en-us/library/bb762245(v=VS.85).aspx" target="_blank"&gt;SHRestricted&lt;/a&gt;. Para ver la correspondencia entre restricciones y códigos hexadecimales, podemos abrir el fichero del SDK de Windows ShlObj.h y posicionarnos en la definición del tipo enumerado RESTRICTIONS (typedef enum RESTRICTIONS). Esta es la línea para el ejemplo que estamos desarrollando:&lt;/p&gt;  &lt;p&gt;REST_NOMANAGEMYCOMPUTERVERB&amp;#160;&amp;#160;&amp;#160;&amp;#160; = 0x4000003C,&amp;#160;&amp;#160; // No Manage verb on My Computer&lt;/p&gt;  &lt;p&gt;A partir de Windows Vista, Microsoft está usando un modelo distinto de restricciones. La primera diferencia la encontramos en la clave de registro donde se activan dichas restricciones. Anteriormente se agregaban a la clave de registro Software\Policies\Microsoft\Windows (ya sea dentro de HKCU o HKLM), pero recientemente toda nueva restricción se agrega a la clave Software\Microsoft\Windows\CurrentVersion\Policies. La segunda diferencia reside en el formato de representación de la restricción: En lugar de usar un valor de 32 bits, se da preferencia a un nuevo formato basado en un GUID de 128 bits. Para agregar una restricción a un verbo usando este nuevo formato debemos crear un valor de nombre “SuppressionPolicyEx” (nótese el “Ex” final) cuyo contenido sea el GUID correspondiente a la restricción. Podemos ver un ejemplo en la clave de registro HKEY_CLASSES_ROOT\batfile\shell\runasuser. Lamentablemente, Microsoft no ha documentado esta información, lo que hace pensar que pueda ser algo transitorio y propenso a cambios. Para el lector interesado, en esta página se recoge información adicional: &lt;a title="http://www.geoffchappell.com/viewer.htm?doc=studies/windows/shell/shlwapi/api/winpolicy/policies.htm" href="http://www.geoffchappell.com/viewer.htm?doc=studies/windows/shell/shlwapi/api/winpolicy/policies.htm"&gt;http://www.geoffchappell.com/viewer.htm?doc=studies/windows/shell/shlwapi/api/winpolicy/policies.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;De manera análoga podemos restringir la aparición de una acción en el menú contextual en función de una consulta al servicio de licencias de Windows. En este caso el valor de registro se denominaría “SuppressionSlapiPolicy” y el contenido sería la licencia a consultar, correspondiéndose con el primer parámetro de la función &lt;a href="http://msdn.microsoft.com/en-us/library/aa965835(v=vs.85).aspx" target="_blank"&gt;SLGetWindowsInformationDWORD&lt;/a&gt;. Si la directiva de licencia que se consulta no está disponible, se ocultará la acción del menú contextual.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Valor de registro “HideInSafeMode”&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si la acción que hemos agregado solamente tiene sentido si el sistema ha arrancado en modo seguro, podemos añadir este valor de cadena (con contenido vacío) para que Windows solo lo muestre en ese escenario.&lt;/p&gt;  &lt;p&gt;Estas son las posibles formas de ocultar un verbo del menú contextual de Windows. La extensión del menú contextual y las asociaciones de archivos es un tema bastante amplio, en algunas ocasiones complejo y que generan bastantes dudas no solo entre desarrolladores de aplicaciones, también entre usuarios finales. Un buen punto de partida para comprender mejor el menú contextual es la documentación oficial de MSDN: &lt;a title="http://msdn.microsoft.com/en-us/library/cc144169(v=vs.85).aspx" href="http://msdn.microsoft.com/en-us/library/cc144169(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc144169(v=vs.85).aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1793473" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Shell/default.aspx">Shell</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consultas/default.aspx">Consultas</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Curiosidades/default.aspx">Curiosidades</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+XP/default.aspx">Windows XP</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/API+de+Windows/default.aspx">API de Windows</category></item><item><title>¿Por qué aparece el fatídico mensaje “No hay disco en la unidad”?</title><link>http://msmvps.com/blogs/dmartin/archive/2011/04/21/191-por-qu-233-aparece-el-fat-237-dico-mensaje-no-hay-disco-en-la-unidad.aspx</link><pubDate>Thu, 21 Apr 2011 23:59:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1792137</guid><dc:creator>dmartin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1792137</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1792137</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/04/21/191-por-qu-233-aparece-el-fat-237-dico-mensaje-no-hay-disco-en-la-unidad.aspx#comments</comments><description>&lt;p&gt;Es posible que en alguna ocasión le aparezca un mensaje de error bastante curioso que, sin motivo aparente, le advierte de que no hay disco en la unidad. Suele aparecer al trabajar con alguna aplicación, &lt;a href="http://support.microsoft.com/kb/330137/es" target="_blank"&gt;o bien al iniciar el sistema&lt;/a&gt;, y tiene un aspecto similar a la siguiente imagen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/8637.Inserte_5F00_disco_5F00_unidad_5F00_17DC44D1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Inserte_disco_unidad" border="0" alt="Inserte_disco_unidad" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/5315.Inserte_5F00_disco_5F00_unidad_5F00_thumb_5F00_439C72F3.png" width="367" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Por qué ocurre este mensaje de error?&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;La representación de un proceso en Windows es una estructura de datos que internamente se denomina EPROCESS (que viene de &lt;em&gt;executive process&lt;/em&gt;) y que reside en espacio de memoria de núcleo. Este bloque contiene numerosos campos y apuntadores a estructuras de datos auxiliares (entre otras, el PEB o bloque de entorno de proceso). Es uno de estos campos el que le dice a Windows si el proceso es quien va a manejar los errores graves de sistema, tales como errores de E/S, fallos de alineamiento, etc. y cómo va a hacerlo. Vemos esto de forma práctica usando Windbg como depurador, habiendo iniciado una sesión de depuración de núcleo y escribiendo este comando:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;lkd&amp;gt; dt _eprocess&lt;/p&gt;    &lt;p&gt;[…]&lt;/p&gt;    &lt;p&gt;+0x284 ImagePathHash : Uint4B      &lt;br /&gt;&lt;strong&gt;+0x288 DefaultHardErrorProcessing : Uint4B&lt;/strong&gt;       &lt;br /&gt;+0x28c LastThreadExitStatus : Int4B       &lt;br /&gt;+0x290 Peb : Ptr64 _PEB       &lt;br /&gt;+0x298 PrefetchTrace : _EX_FAST_REF       &lt;br /&gt;+0x2a0 ReadOperationCount : _LARGE_INTEGER       &lt;br /&gt;+0x2a8 WriteOperationCount : _LARGE_INTEGER       &lt;br /&gt;+0x2b0 OtherOperationCount : _LARGE_INTEGER       &lt;br /&gt;+0x2b8 ReadTransferCount : _LARGE_INTEGER&lt;/p&gt;    &lt;p&gt;[…]&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;El campo “DefaultHardErrorProcessing” está marcado en negrita porque es el que nos interesa para este artículo. Cuando Windows crea un proceso, como podrá intuir, una de las fases de inicialización implica rellenar la estructura EPROCESS. Una vez que se rellena la estructura EPROCESS esta se inserta en la lista de procesos activos y en el espacio de nombres del administrador de objetos de Windows (&lt;em&gt;Object Manager&lt;/em&gt;), el cual devuelve un &lt;em&gt;handle&lt;/em&gt; único que permite que el proceso sea accesible tanto para el sistema como para el resto de aplicaciones. El valor inicial del campo “DefaultHardErrorProcessing” generalmente se hereda del proceso padre, y por defecto hace que el sistema muestre todos los errores graves de sistema que ocurran. La ventana de error aparece cuando ocurre un error grave y el proceso o hilo en cuestión no lo ha gestionado.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Cómo cambiar el contenido del atributo de proceso &lt;em&gt;DefaultHardErrorProcessing &lt;/em&gt;para que en vez de mostrar una ventana de error se le envíe el error al proceso para que lo trate?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Se puede usar la API pública &lt;a href="http://msdn.microsoft.com/en-us/library/ms680621(VS.85).aspx" target="_blank"&gt;SetErrorMode&lt;/a&gt;, que admite diferentes parámetros según el tipo de error grave que queramos delegar al proceso en cuestión. De esta manera evitaremos que aparezcan crípticas ventanas de error (como la que aparece al comienzo del artículo), y que nuestra aplicación quede a la espera de que interactuemos con dicha ventana para proseguir con su funcionamiento. En Windows Vista se añadió al bloque de entorno de hilo (TEB) un nuevo campo de control de errores graves, como puede comprobar si ejecuta el comando !teb en una sesión de depuración de núcleo en Windbg (en Windows Vista o Windows 7):&lt;/p&gt; &lt;code&gt;   &lt;p&gt;kd&amp;gt; !teb&lt;/p&gt;    &lt;p&gt;[…]&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;HardErrorMode:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0`&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;[…]&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Si bien este campo está presente desde Windows Vista, no fue hasta la llegada de Windows 7 cuando se creó una API pública para que los desarrolladores pudieran modificarlo en sus programas: &lt;a href="http://msdn.microsoft.com/en-us/library/dd553630(VS.85).aspx" target="_blank"&gt;SetThreadErrorMode&lt;/a&gt;. Esta API surgió de la necesidad por parte de las aplicaciones multi-hilo de cambiar este valor sin afectar al valor por proceso (que automáticamente es heredado por cada nuevo hilo).&lt;/p&gt;  &lt;p&gt;Así pues, es recomendable que las aplicaciones hagan uso de la siguiente llamada a función para evitar que la experiencia de usuario sea poco agradable en caso de que ocurran errores graves:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;SetErrorMode(SEM_FAILCRITICALERRORS);&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;o bien, en Windows 7:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;SetThreadErrorMode(SEM_FAILCRITICALERRORS);&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Esta es la causa por la cual aparecen mensajes del tipo “No hay disco en la unidad” en los momentos más inoportunos. Por suerte Windows ofrece a los desarrolladores la posibilidad de manejar apropiadamente estas circunstancias excepcionales para así proporcionar una experiencia de usuario más agradable. Espero que este artículo haga más visibles estas posibilidades y todos disfrutemos de un mejor ecosistema.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1792137" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Funcionamiento/default.aspx">Funcionamiento</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/API+de+Windows/default.aspx">API de Windows</category></item><item><title>¿Qué cuentas de usuario se muestran en la pantalla de bienvenida de Windows?</title><link>http://msmvps.com/blogs/dmartin/archive/2011/04/01/191-qu-233-cuentas-de-usuario-se-muestran-en-la-pantalla-de-bienvenida-de-windows.aspx</link><pubDate>Fri, 01 Apr 2011 06:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1790981</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=1790981</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1790981</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/04/01/191-qu-233-cuentas-de-usuario-se-muestran-en-la-pantalla-de-bienvenida-de-windows.aspx#comments</comments><description>&lt;p&gt;Una pregunta que se hacen muchos usuarios de Windows es qu&amp;eacute; cuentas de usuario se muestran en la pantalla de bienvenida, puesto que no hay una relaci&amp;oacute;n de uno a uno entre las cuentas existentes en el sistema y las cuentas que aparecen al iniciar el equipo. Este art&amp;iacute;culo intentar&amp;aacute; aclarar esta duda.&lt;/p&gt;
&lt;p&gt;Winlogon.exe, el proceso encargado del inicio de sesi&amp;oacute;n en Windows, es quien realiza la enumeraci&amp;oacute;n y filtrado de las cuentas de usuario para mostrarlas en la pantalla de bienvenida ejecutando para ello, en Windows Vista y 7, un proceso auxiliar, LogonUI.exe. El hecho de separar esta tarea en dos procesos sirve para garantizar la estabilidad del sistema en caso de que c&amp;oacute;digo de autenticaci&amp;oacute;n de terceros (por ejemplo, el software de un lector de huellas) hiciera fallar a Winlogon.exe, un proceso que es cr&amp;iacute;tico para el buen funcionamiento del sistema operativo. Al mostrar cuentas en la pantalla de bienvenida se examina antes una lista de cuentas &amp;ldquo;especiales&amp;rdquo; que, o bien siempre deben incluirse, o bien siempre deben ocultarse de dicha pantalla. La lista de cuentas &amp;ldquo;especiales&amp;rdquo; reside en el registro, concretamente en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList. All&amp;iacute;, un valor de registro de tipo DWORD y con nombre igual al nombre de la cuenta de usuario &amp;ldquo;especial&amp;rdquo; decide si la cuenta siempre se incluye en la pantalla de bienvenida (contenido a 1), o bien siempre queda oculta (contenido a 0). Esta lista de cuentas especiales se almacena en una cach&amp;eacute; en memoria, as&amp;iacute; que si modificamos el registro es conveniente que reiniciemos el equipo para que los cambios surtan efecto.&lt;/p&gt;
&lt;p&gt;Adem&amp;aacute;s del listado de cuentas &amp;ldquo;especiales&amp;rdquo; que el usuario puede editar desde el registro, Windows autom&amp;aacute;ticamente excluye ciertas cuentas de usuario que no interesa que aparezcan en la pantalla de bienvenida, puesto que causar&amp;iacute;an bastante confusi&amp;oacute;n al usuario. Se trata de cuentas de usuario que instalan entre otros Microsoft IIS (&lt;em&gt;Internet Information Server&lt;/em&gt;) o Visual Studio y que no est&amp;aacute;n pensadas para que el usuario inicie sesi&amp;oacute;n con ellas. Concretamente, nunca aparecer&amp;aacute;n en la pantalla de bienvenida aquellas cuentas de usuario que empiecen con los prefijos &amp;ldquo;IWAM_&amp;rdquo;, &amp;ldquo;IUSR_&amp;rdquo;, &amp;ldquo;VUSR_&amp;rdquo;, entre otros posibles. Otro tipo de cuentas que obviamente siempre se ocultan son aquellas que est&amp;aacute;n deshabilitadas o bloqueadas. Es importante comentar que en la pantalla de bienvenida solo aparecen las cuentas que pertenezcan a los grupos de usuarios creados durante la instalaci&amp;oacute;n de Windows, a saber, &amp;ldquo;administradores&amp;rdquo;, &amp;ldquo;usuarios avanzados&amp;rdquo;, &amp;ldquo;usuarios&amp;rdquo; e &amp;ldquo;invitados&amp;rdquo;. Por este motivo, por ejemplo la cuenta de usuario que crea VMWare Workstation dentro del grupo &amp;ldquo;__vmware__&amp;rdquo; no se muestra en la pantalla de bienvenida.&lt;/p&gt;
&lt;p&gt;Pasamos a analizar en detalle lo que ocurre en la pantalla de bienvenida con un cuenta de usuario que, por recibir un tratamiento especial por parte del sistema, merece un apartado para ella sola: la cuenta &amp;ldquo;Administrador&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La cuenta &amp;ldquo;Administrador&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esta cuenta es especial en el sentido de que es la primera cuenta que se crea al instalar Windows. Es similar a la cuenta &lt;em&gt;root&lt;/em&gt; de GNU/Linux y, como esta, solo deber&amp;iacute;a usarse en casos de emergencia. Microsoft hace patente esto al deshabilitarla por defecto y no asignarle una contrase&amp;ntilde;a. Lo que diferencia a esta cuenta del resto de cuentas con privilegios administrativos es que la cuenta &amp;ldquo;Administrador&amp;rdquo; tiene por defecto desactivado Control de cuentas de usuario, lo que quiere decir que si iniciamos sesi&amp;oacute;n con ella gozaremos de verdaderos privilegios administrativos todo el rato. Ah&amp;iacute; reside el principal peligro de esta cuenta y por lo cual yo siempre desaconsejo su manipulaci&amp;oacute;n, salvo en casos justificados. &lt;/p&gt;
&lt;p&gt;El comportamiento de esta cuenta en la pantalla de bienvenida depende del sistema operativo en el que estemos trabajando. En Windows XP, la cuenta &amp;ldquo;Administrador&amp;rdquo; no aparece en la pantalla de bienvenida si ya se ha creado con anterioridad otra cuenta con privilegios administrativos. En Windows Vista y Windows 7, a diferencia de sistemas anteriores, la cuenta &amp;ldquo;Administrador&amp;rdquo; no se oculta nunca de la pantalla de bienvenida, siempre y cuando est&amp;eacute; activada.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;iquest;Qu&amp;eacute; ocurre con la cuenta &amp;ldquo;Administrador&amp;rdquo; en modo seguro?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En Windows XP al iniciar el equipo en modo seguro podremos tener acceso a la cuenta &amp;ldquo;Administrador&amp;rdquo;, de hecho tendremos acceso a todas las cuentas del equipo que pertenezcan al grupo de administradores (el resto de cuentas no ser&amp;aacute;n mostradas).&lt;/p&gt;
&lt;p&gt;En Windows Vista y Windows 7 el estado habilitado o deshabilitado de la cuenta &amp;ldquo;Administrador&amp;rdquo; (y por consiguiente, la capacidad para iniciar sesi&amp;oacute;n con ella o no) puede variar en modo seguro. Esto se debe a que aunque Microsoft no quiere que los usuarios inicien sesi&amp;oacute;n con el usuario &amp;ldquo;Administrador&amp;rdquo; s&amp;iacute; quiere proporcionar un m&amp;eacute;todo de inicio de sesi&amp;oacute;n &amp;ldquo;de emergencia&amp;rdquo; para cuando se han deshabilitado o borrado todas las cuentas administrativas del equipo. El hecho de que en modo seguro la cuenta &amp;ldquo;Administrador&amp;rdquo; se considere habilitada o deshabilitada depende de si el sistema operativo es cliente o servidor y de si est&amp;aacute; unido a un dominio. Resumo las posibilidades en esta tabla:&lt;/p&gt;
&lt;p&gt;&amp;iquest;Cu&amp;aacute;ndo est&amp;aacute; habilitada o deshabilitada la cuenta &amp;ldquo;Administrador&amp;rdquo; en modo seguro? (Windows Vista/7)&lt;/p&gt;
&lt;table width="643" cellpadding="2" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td width="253" valign="top"&gt;&lt;strong&gt;No unido a dominio&lt;/strong&gt;&lt;/td&gt;
&lt;td width="255" valign="top"&gt;&lt;strong&gt;Unido a dominio&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;&lt;strong&gt;S.O. cliente&lt;/strong&gt;&lt;/td&gt;
&lt;td width="253" valign="top"&gt;Habilitada en caso de emergencia*&lt;/td&gt;
&lt;td width="255" valign="top"&gt;Se respeta el estado de la cuenta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;&lt;strong&gt;S.O. servidor&lt;/strong&gt;&lt;/td&gt;
&lt;td width="253" valign="top"&gt;Siempre habilitada&lt;/td&gt;
&lt;td width="255" valign="top"&gt;Siempre habilitada&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;*: El caso de emergencia ocurre cuando no hay ninguna cuenta administrativa habilitada para el inicio de sesi&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;En este art&amp;iacute;culo he descrito a grandes rasgos las cuentas de usuario que aparecen en la pantalla de bienvenida de Windows, aspecto que depende entre otras cosas del sistema operativo, del tipo de cuenta y de si se ha iniciado en modo seguro o no. Si desea ocultar cuentas de la pantalla de bienvenida puede usar mi herramienta &lt;a target="_blank" href="http://www.wintecnico.com/descargas/hideaccounts7"&gt;HideUserAccounts7&lt;/a&gt;, que lo que hace es incluirlas dentro del grupo de cuentas &amp;ldquo;especiales&amp;rdquo;, ya comentado al principio, marc&amp;aacute;ndolas como siempre ocultas. Debe tener especial cuidado a la hora de ocultarlas puesto que accidentalmente podr&amp;iacute;a impedirse completamente el inicio de sesi&amp;oacute;n en la m&amp;aacute;quina.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1790981" 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/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Arranque/default.aspx">Arranque</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Funcionamiento/default.aspx">Funcionamiento</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+XP/default.aspx">Windows XP</category></item><item><title>Sorteo de dos licencias de Diskeeper entre los participantes de mi foro</title><link>http://msmvps.com/blogs/dmartin/archive/2011/03/16/sorteo-de-dos-licencias-de-diskeeper-entre-los-participantes-de-mi-foro.aspx</link><pubDate>Wed, 16 Mar 2011 08:23:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1790023</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=1790023</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1790023</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/03/16/sorteo-de-dos-licencias-de-diskeeper-entre-los-participantes-de-mi-foro.aspx#comments</comments><description>&lt;p&gt;En mis foros estoy sorteando dos licencias de Diskeeper (&lt;a href="http://www.diskeeper.com/"&gt;http://www.diskeeper.com/&lt;/a&gt;), un &lt;em&gt;partner&lt;/em&gt; de Microsoft dedicado a la desfragmentaci&amp;oacute;n de discos, y cuyos productos ofrecen un valor a&amp;ntilde;adido al software de desfragmentaci&amp;oacute;n incluido en Windows. Aqu&amp;iacute; puede ver las caracter&amp;iacute;sticas de este software: &lt;a href="http://www.diskeeper.com/business/diskeeper/"&gt;http://www.diskeeper.com/business/diskeeper/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si le interesa, para participar solamente hay que publicar en el foro General de Wintecnico.com un peque&amp;ntilde;o art&amp;iacute;culo, truco o &lt;em&gt;tip&lt;/em&gt; sobre Windows, cuanto m&amp;aacute;s original mejor.&amp;nbsp;Aqu&amp;iacute; hay m&amp;aacute;s informaci&amp;oacute;n sobre el concurso: &lt;a href="http://www.wintecnico.com/foros/default.aspx?g=posts&amp;amp;t=77"&gt;http://www.wintecnico.com/foros/default.aspx?g=posts&amp;amp;t=77&lt;/a&gt;&amp;nbsp; Los ganadores los publicar&amp;eacute; en dicho foro y ser&amp;aacute;n contactados por correo electr&amp;oacute;nico.&lt;/p&gt;
&lt;p&gt;&amp;iexcl;Suerte!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1790023" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Wintecnico/default.aspx">Wintecnico</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Offtopic/default.aspx">Offtopic</category></item><item><title>¿Cómo automatizar la eliminación de temporales de Internet Explorer?</title><link>http://msmvps.com/blogs/dmartin/archive/2011/03/11/191-c-243-mo-automatizar-la-eliminaci-243-n-de-temporales-de-internet-explorer.aspx</link><pubDate>Sat, 12 Mar 2011 03:42:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1789813</guid><dc:creator>dmartin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1789813</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1789813</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/03/11/191-c-243-mo-automatizar-la-eliminaci-243-n-de-temporales-de-internet-explorer.aspx#comments</comments><description>&lt;p&gt;Una forma sencilla de eliminar temporales en Internet Explorer consiste en abrir el menú &lt;em&gt;Herramientas&lt;/em&gt;, &lt;em&gt;Opciones de Internet&lt;/em&gt; y hacer clic sobre el botón &lt;em&gt;Eliminar&lt;/em&gt; del apartado &lt;em&gt;Historial de exploración&lt;/em&gt;. Sin embargo, a casi todo el mundo nos gusta automatizar ciertas tareas, y algo como eliminar la cache de navegación se realiza asiduamente así que bastante beneficio podríamos obtener si logramos automatizarla en la forma de un &lt;em&gt;script&lt;/em&gt; o algo similar.&lt;/p&gt;  &lt;p&gt;En Internet circulan &lt;em&gt;scripts&lt;/em&gt; que eliminan temporales de Internet similares al siguiente:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;rem Eliminar Archivos temporales de Internet      &lt;br /&gt;start RunDll32 InetCpl.cpl,ClearMyTracksByProcess 8       &lt;br /&gt;@exit&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Pese a que el &lt;em&gt;script&lt;/em&gt; funciona correctamente, hay que tener en cuenta que en Windows Vista y Windows 7 está accediendo y borrando ficheros que tienen un &lt;a href="http://msdn.microsoft.com/en-us/library/bb625964.aspx" target="_blank"&gt;nivel de integridad&lt;/a&gt; bajo (los temporales creados por IE con modo protegido activado) desde un proceso con un nivel de integridad medio (por defecto en Windows 7 y Windows Vista).&lt;/p&gt;  &lt;p&gt;Una posible mejora consiste en crear un nuevo proceso que tenga un nivel de integridad bajo y ejecutar el comando RunDll32 InetCpl.cpl,ClearMyTracksByProcess en él. Para ejemplizar mi solución, he creado una pequeña utilidad que hace esto mismo. La puede descargar desde &lt;a href="http://www.wintecnico.com/ficheros/CleanIETempFiles.zip" target="_blank"&gt;aquí&lt;/a&gt;. La herramienta admite una serie de parámetros de configuración para eliminar todo, solo temporales (-t), solo historial (-h), solo &lt;em&gt;cookies&lt;/em&gt; (-c), o sin mostrar interfaz de usuario (-q). Básicamente el algoritmo que he seguido es: Duplicar el manejador del proceso que ejecuta la aplicación, usar la API &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/settokeninformation.asp"&gt;SetTokenInformation&lt;/a&gt; para rebajar el nivel de integridad a “bajo” y finalmente usar &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocessasuser.asp"&gt;CreateProcessAsUser&lt;/a&gt; para crear un nuevo proceso con este nuevo &lt;em&gt;token&lt;/em&gt; de seguridad. Este proceso ejecuta el comando RunDll32 InetCpl.cpl,ClearMyTracksByProcess normalmente.&lt;/p&gt;  &lt;p&gt;Como se hace uso de una función implementada en el sistema operativo, personalmente prefiero esta solución a eliminar manualmente los directorios de temporales. Eliminar temporales no es solamente limpiar una carpeta y es bueno que el equipo de producto de Microsoft nos abstraiga de esta tarea mediante una función. A pesar de todo, no podemos contar con que esta función siga en versiones sucesivas de Internet Explorer.&lt;/p&gt;  &lt;p&gt;Para concluir, comprobamos en Process Explorer cómo mi herramienta ha creado dos procesos que ejecutan el comando de limpieza, uno con nivel de integridad bajo y otro con nivel de integridad medio, cada una ocupándose de su correspondiente caché:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/8357.Rundll_5F00_06335C7E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Rundll" border="0" alt="Rundll" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/7144.Rundll_5F00_thumb_5F00_491F051E.png" width="664" height="49" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Cuáles son los posibles &lt;em&gt;flags&lt;/em&gt; de la función ClearMyTracksByProcess?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ya tenemos una solución, ahora bien, es posible que necesitemos hacer uso de la función ClearMyTracksByProcess en algún otro momento, así que vendría bien tener a modo de referencia los posibles &lt;em&gt;flags&lt;/em&gt; que se le pueden pasar. Según mis pruebas, esta es una lista más o menos detallada:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Historial: 1 &lt;/li&gt;    &lt;li&gt;Cookies: 2 &lt;/li&gt;    &lt;li&gt;Temporales de Internet: 4 &lt;/li&gt;    &lt;li&gt;Temporales incluyendo favoritos &lt;em&gt;offline&lt;/em&gt;: 8 &lt;/li&gt;    &lt;li&gt;Formularios: 16&lt;/li&gt;    &lt;li&gt;Contraseñas: 32&lt;/li&gt;    &lt;li&gt;Filtro de &lt;em&gt;phising&lt;/em&gt;: 64&lt;/li&gt;    &lt;li&gt;Ejecutar sin ventana de progreso: 256&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Los valores se pueden combinar mediante una simple OR. En una próxima actualización de mi herramienta iré incluyendo mejoras en la granularidad de limpieza.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1789813" 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/Internet+Explorer/default.aspx">Internet Explorer</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Cómo eliminar la información de desinstalación del SP1 de Windows 7 y así ahorrar espacio en disco</title><link>http://msmvps.com/blogs/dmartin/archive/2011/02/13/c-243-mo-eliminar-la-informaci-243-n-de-desinstalaci-243-n-del-sp1-de-windows-7-y-as-237-ahorrar-espacio-en-disco.aspx</link><pubDate>Sun, 13 Feb 2011 14:16:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1788110</guid><dc:creator>dmartin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1788110</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1788110</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/02/13/c-243-mo-eliminar-la-informaci-243-n-de-desinstalaci-243-n-del-sp1-de-windows-7-y-as-237-ahorrar-espacio-en-disco.aspx#comments</comments><description>&lt;p&gt;Una vez instalado Windows 7 Service Pack 1 (en el momento de confeccionar este art&amp;iacute;culo, a&amp;uacute;n en versi&amp;oacute;n RC), es posible que queramos ahorrar cierto espacio en disco quitando aquellas versiones antiguas de los componentes que hayan sido reemplazados por el &lt;em&gt;service pack&lt;/em&gt;. Esto evita que se pueda desinstalar en un futuro, pero si tras un periodo de prueba todo funciona correctamente, raramente es necesario desinstalar un &lt;em&gt;service pack&lt;/em&gt;. El hecho de impedir la desinstalaci&amp;oacute;n del &lt;em&gt;service pack&lt;/em&gt; tiene todo el sentido del mundo cuando hemos procedido a integrarlo en una imagen original de Windows 7/Windows Server 2008 R2, tal y como explico en &lt;a target="_blank" href="http://msmvps.com/blogs/dmartin/archive/2011/01/15/c-243-mo-integrar-service-pack-1-en-un-dvd-de-windows-7-server-2008-r2.aspx"&gt;este&lt;/a&gt; art&amp;iacute;culo.&lt;/p&gt;
&lt;p&gt;Hay tres formas de eliminar la informaci&amp;oacute;n de desinstalaci&amp;oacute;n del SP1 de Windows 7:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Usando Liberador de espacio en disco&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Al abrir la herramienta Liberador de espacio en disco (Cleanmgr.exe), si se selecciona la opci&amp;oacute;n de &lt;em&gt;Limpiar archivos de sistema&lt;/em&gt; (o lo que es lo mismo, ejecut&amp;aacute;ndola con privilegios administrativos), nos dar&amp;aacute; la opci&amp;oacute;n de eliminar los archivos de desinstalaci&amp;oacute;n del &lt;em&gt;service pack&lt;/em&gt;, tal y como se ve en la captura siguiente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/7633.SP1_5F00_Cleanup_5F00_361BE90A.png"&gt;&lt;img height="154" width="292" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/4212.SP1_5F00_Cleanup_5F00_thumb_5F00_679730D2.png" alt="SP1_Cleanup" border="0" title="SP1_Cleanup" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta es quiz&amp;aacute; la opci&amp;oacute;n m&amp;aacute;s simple para la mayor&amp;iacute;a de usuarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desde la l&amp;iacute;nea de comandos, con el sistema arrancado&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si ejecutamos una ventana de l&amp;iacute;nea de comandos (Cmd.exe) con privilegios administrativos y tecleamos lo siguiente podremos eliminar los archivos de desinstalaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;dism /online /Cleanup-Image /spsuperseded&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desde la l&amp;iacute;nea de comandos, con el sistema &lt;em&gt;no&lt;/em&gt; arrancado&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si el sistema no est&amp;aacute; arrancado, o bien si estamos integrando el &lt;em&gt;service pack&lt;/em&gt;, podemos usar este comando desde otro sistema operativo que tengamos instalado en la misma m&amp;aacute;quina:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;dism /Image:D: /Cleanup-Image /spsuperseded&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;(Donde D: es la unidad donde est&amp;aacute; instalado el sistema operativo con SP1).&lt;/p&gt;
&lt;p&gt;Es indiferente la opci&amp;oacute;n que usemos, el resultado es el mismo. Las dos &amp;uacute;ltimas opciones tienen la ventaja de la automatizaci&amp;oacute;n que se puede lograr usando bater&amp;iacute;as de comandos o similares. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1788110" 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/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Service+Pack+1/default.aspx">Service Pack 1</category></item><item><title>¿Por qué Windows Registry Editor Version 5.00 y no REGEDIT5?</title><link>http://msmvps.com/blogs/dmartin/archive/2011/01/29/191-por-qu-233-windows-registry-editor-version-5-00-y-no-regedit5.aspx</link><pubDate>Sun, 30 Jan 2011 01:12:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1787329</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=1787329</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1787329</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/01/29/191-por-qu-233-windows-registry-editor-version-5-00-y-no-regedit5.aspx#comments</comments><description>&lt;p&gt;En Internet es común encontrarnos con ficheros .reg que contienen datos que se pueden importar en el registro del sistema operativo. Si nos fijamos en la cabecera de estos ficheros .reg, nos podemos encontrar con dos tipos diferentes:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;REGEDIT4&lt;/p&gt;    &lt;p&gt;Windows Registry Editor Version 5.00&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Existe un tercer tipo que quizá no haya visto nunca, REGEDIT, que se corresponde con ficheros de registro para Windows 3.1, sistema operativo en el que apareció la primera versión de lo que conocemos como registro. Que recuerde, en esa primera versión solamente existía la raíz HKEY_CLASSES_ROOT.&lt;/p&gt;  &lt;p&gt;¿Cuál es la diferencia entre ambas cabeceras? La respuesta a esta pregunta da pie a un breve artículo sobre la historia de Windows, particularmente de Editor del Registro.&lt;/p&gt;  &lt;p&gt;En los inicios de Windows, Editor del Registro no soportaba todos los tipos de valores que soporta hoy en día. Entre otros, no entendía de forma nativa valores de tipo cadena expandible (REG_EXPAND_SZ). Por este motivo, estos valores debían ser exportados a un fichero de texto de forma “cruda”, es decir, como una cadena ANSI de valores hexadecimales, terminada por un carácter nulo. He aquí un ejemplo. Al exportar una clave de registro que contiene un valor de tipo cadena expandible queda algo como esto:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;REGEDIT4&lt;/p&gt;    &lt;p&gt;[HKEY_CURRENT_USER\Prueba]      &lt;br /&gt;&amp;quot;Prueba&amp;quot;=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,00&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Cuando nació Windows 2000, la compatibilidad con Unicode hizo que Editor del Registro exportara ficheros de registro de una forma un tanto diferente. Ahora los valores de cadena expandible no eran exportados como flujos hexadecimales en formato ANSI, sino Unicode, y la misma clave de registro quedaría exportada de la siguiente forma:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;REGEDIT4&lt;/p&gt;    &lt;p&gt;[HKEY_CURRENT_USER\Prueba]      &lt;br /&gt;&amp;quot;Prueba&amp;quot;=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\       &lt;br /&gt;&amp;#160; 00,25,00,00,00&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;El caos que se formó fue importante, porque de pronto Editor del Registro podría dejar de importar correctamente millones de archivos de registro.&lt;/p&gt;  &lt;p&gt;El primer intento de solución por parte de Microsoft fue el de crear una nueva cabecera para los archivos de registro, la versión 5, REGEDIT5. El problema que tiene esta cabecera es que tampoco era interpretada correctamente porque el &lt;em&gt;parser&lt;/em&gt; de Editor del Registro no tenía en cuenta correctamente el número de versión. Si lo que viene después de “REGEDIT” es un número 4, entonces interpreta que se trata de un archivo de registro de tipo Windows 9x. Si no, interpreta que se trata de un fichero de registro de tipo Windows 3.1. ¡Desde Microsoft no pensaban que Editor del Registro fuese a necesitar una nueva versión!&lt;/p&gt;  &lt;p&gt;Así pues, la única solución posible fue reescribir completamente la cabecera, y aprovechando la experiencia adquirida, hacerla más robusta ante futuras versiones de Editor del Registro. La nueva cabecera resultante quedó como “Windows Registry Editor Version 5.00” y ahora el &lt;em&gt;parser&lt;/em&gt; sí interpreta correctamente que se trata de la versión 5.00. Si en un futuro Microsoft desarrollara una versión posterior, los editores antiguos descartarán adecuadamente el fichero en vez de importarlo. Las versiones recientes de Editor del Registro pueden importar archivos de registro de tipo Windows 9x y Windows 3.1. También ofrecen la posibilidad de exportar archivos de registro en formato de cadena ANSI para garantizar su compatibilidad con sistemas Windows 9x. Para ello basta con seleccionar la correspondiente opción &lt;em&gt;Archivos de Registro de Win9x/NT4 (REGEDIT4)&lt;/em&gt; en la lista desplegable &lt;em&gt;Tipo&lt;/em&gt; del cuadro de diálogo &lt;em&gt;Exportar&lt;/em&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1787329" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Curiosidades/default.aspx">Curiosidades</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Historia/default.aspx">Historia</category></item><item><title>Cómo integrar Service Pack 1 en un DVD de Windows 7/Server 2008 R2</title><link>http://msmvps.com/blogs/dmartin/archive/2011/01/15/c-243-mo-integrar-service-pack-1-en-un-dvd-de-windows-7-server-2008-r2.aspx</link><pubDate>Sat, 15 Jan 2011 16:24:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1786471</guid><dc:creator>dmartin</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1786471</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1786471</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/01/15/c-243-mo-integrar-service-pack-1-en-un-dvd-de-windows-7-server-2008-r2.aspx#comments</comments><description>&lt;p&gt;Ante la inminente llegada del primer &lt;em&gt;service pack&lt;/em&gt; para Windows 7/Server 2008 R2, mucha gente aprovecha estos momentos para preparar sus sistemas para acoger la actualización. Si se requiere instalar una nueva copia del sistema operativo, es un buen momento para hacerlo usando una imagen que ya lo tenga integrado, para ahorrarnos el tiempo de acudir posteriormente a Windows Update y descargar la actualización.&lt;/p&gt;  &lt;p&gt;La integración de &lt;em&gt;service packs&lt;/em&gt; en Windows Vista y Windows 7 no es tan sencilla como lo era en Windows XP, por ejemplo. En los primeros no está soportada la integración de &lt;em&gt;service packs&lt;/em&gt; en una imagen &lt;em&gt;offline&lt;/em&gt; (es decir, no arrancada), por lo que tendremos que instalar el &lt;em&gt;service pack&lt;/em&gt; en un sistema arrancado y “generalizarlo” (es decir, quitar todo aquello que lo hace dependiente de la máquina, tales como controladores instalados y demás). En este artículo voy a describir un posible método de integración sobre una edición de Windows 7. Vamos a necesitar lo siguiente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Un DVD o imagen ISO con Windows 7/Server 2008 R2 &lt;/li&gt;    &lt;li&gt;Windows AIK para Windows 7, que se puede descargar gratuitamente desde &lt;a title="http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=es" href="http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=es"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=es&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Guardar una copia de Service Pack 1 para Windows 7/Server 2008 R2 en un DVD o en un dispositivo de almacenamiento USB. &lt;/li&gt;    &lt;li&gt;Una máquina de laboratorio que disponga de al menos dos particiones (cada una de unos 20 GB de tamaño pues van a albergar un sistema operativo cada una y además la instalación de SP1 requiere de aproximadamente 5 GB libres.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Comenzamos la integración&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El primer paso consiste en instalar en el sistema principal la aplicación Windows AIK, que contiene herramientas especializadas que nos servirán para manipular la imagen integrada del sistema operativo. &lt;/p&gt;  &lt;p&gt;Una vez instalada esta aplicación, copie el contenido del DVD o ISO de Windows 7/Server 2008 R2 en una carpeta de este sistema principal, por ejemplo C:\DVD.&lt;/p&gt;  &lt;p&gt;En la segunda partición que tiene libre, instale del modo habitual una edición de Windows 7/Server 2008 R2. Este será el sistema que actúe como base para la integración del &lt;em&gt;service pack&lt;/em&gt;, así que le recomiendo que instale la edición que use más a menudo.&lt;/p&gt;  &lt;p&gt;Cuando finalice la instalación, le aparecerá un asistente para crear usuarios, configurar la zona horaria, etc. Este asistente recibe el nombre de OOBE (&lt;em&gt;Out Of the Box Experience&lt;/em&gt;). En esta imagen puede ver qué aspecto tiene: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/1222.OOBE_5F00_11ECFD52.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="OOBE" border="0" alt="OOBE" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/7462.OOBE_5F00_thumb_5F00_5AE2F94B.png" width="290" height="246" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En este momento, sin rellenar nada, pulse la combinación de teclas Ctrl+Mayúsculas+F3. El sistema se reiniciará en modo auditoría. El modo auditoría lo suelen usar los OEM para personalizar las imágenes de Windows 7 e instalar todos los programas de serie que suelen incluir (antivirus, Office, etc.). Puede informarse más sobre el modo auditoría en este artículo: &lt;a title="http://technet.microsoft.com/en-us/library/dd744337(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/dd744337(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd744337(WS.10).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una vez se haya reiniciado el sistema en modo auditoría, introduzca el DVD o dispositivo de almacenamiento USB que contiene Service Pack 1 y proceda a instalarlo. Es recomendable que seleccione la casilla para reiniciar el sistema automáticamente cuando finalice la instalación. Dicho proceso de instalación puede llevar bastante tiempo, dependiendo de la configuración hardware de la máquina. &lt;/p&gt;  &lt;p&gt;Una vez se haya instalado el &lt;em&gt;service pack&lt;/em&gt;, el sistema se reiniciará automáticamente. Cuando arranque de nuevo el sistema, en la ventana de título &lt;em&gt;Herramienta de preparación del sistema (SysPrep)&lt;/em&gt;, seleccione la opción &lt;em&gt;Iniciar la configuración rápida (OOBE) del sistema&lt;/em&gt;, marque la casilla &lt;em&gt;Generalizar&lt;/em&gt;, y seleccione la opción &lt;em&gt;Reiniciar&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;Inicie ahora el sistema operativo principal, donde ha instalado Windows AIK.&lt;/p&gt;  &lt;p&gt;Abra &lt;em&gt;Inicio&lt;/em&gt;, &lt;em&gt;Todos los programas&lt;/em&gt;, seleccione &lt;em&gt;Microsoft Windows AIK&lt;/em&gt;, seleccione con el botón derecho &lt;em&gt;Línea de comandos de las herramientas de implementación&lt;/em&gt; y pulse sobre &lt;em&gt;Ejecutar como administrador&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Teclee este comando y pulse INTRO:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;dism /Image:D: /Cleanup-Image /spsuperseded&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;(donde D: es la unidad que contiene al sistema operativo que tiene SP1 instalado)&lt;/p&gt;  &lt;p&gt;Este comando eliminará archivos antiguos que quedan tras la instalación del &lt;em&gt;service pack&lt;/em&gt;, evitando también que el usuario pueda desinstalarlo (lo cual carece de sentido en una instalación integrada).&lt;/p&gt;  &lt;p&gt;A continuación vamos a crear una imagen WIM a partir del sistema operativo generalizado. Teclee este comando:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;imagex /capture D: C:\Install.wim “Windows 7 Ultimate” “Windows 7 Ultimate SP1 (x86)” /compress maximum /flags “Ultimate” &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;El proceso puede tardar más de media hora, dependiendo del hardware del equipo.&lt;/p&gt;  &lt;p&gt;Cuando finalice, tendrá una imagen de instalación (Install.wim) que contiene la edición de Windows 7 que haya elegido, así como SP1 integrado.&lt;/p&gt;  &lt;p&gt;Ya solo falta sustituir el fichero C:\DVD\sources\install.wim por el nuevo fichero C:\install.wim que se acaba de crear y generar una ISO de Windows 7, mediante la herramienta Oscdimg.exe:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;oscdimg –bC:\DVD\boot\etfsboot.com –u2 –h –m –lWindows7_SP1_x86_ES C:\DVD C:\Windows7_SP1_x86_ES.iso&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Recuerde que si la imagen tiene un tamaño superior a 4,5 GB, debe crear un fichero Bootorder.txt para que los ficheros de arranque se sitúen correctamente, tal y como describo en los pasos finales de &lt;a href="http://msmvps.com/blogs/dmartin/archive/2010/10/23/c-243-mo-crear-un-dvd-de-windows-7-x86-x64-con-cuatro-idiomas-integrados.aspx" target="_blank"&gt;este otro artículo&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Probamos nuestro DVD integrado&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Procedemos a instalar nuestro DVD con Windows 7/Server 2008 R2 SP1 y al finalizar la instalación abrimos &lt;em&gt;Inicio&lt;/em&gt;, hacemos clic con el botón derecho sobre &lt;em&gt;Equipo&lt;/em&gt;, &lt;em&gt;Propiedades&lt;/em&gt;, y observamos que todo ha ido bien:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/5023.SP1_5F00_RC_5F00_38AAEDC5.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SP1_RC" border="0" alt="SP1_RC" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/3618.SP1_5F00_RC_5F00_thumb_5F00_707D31E8.png" width="345" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Nota:&lt;/u&gt; La imagen representa los números de versión de la versión RC del SP1, no de la versión final.&lt;/p&gt;  &lt;p&gt;Hay otras formas de integrar Windows 7 SP1 en un único DVD, usando otras herramientas de instalación desatendida de Microsoft. También existe la posibilidad de integrar varias ediciones, arquitecturas e idiomas, usando los conceptos que explico en mi &lt;a href="http://msmvps.com/blogs/dmartin/archive/2010/10/23/c-243-mo-crear-un-dvd-de-windows-7-x86-x64-con-cuatro-idiomas-integrados.aspx" target="_blank"&gt;otro artículo&lt;/a&gt; sobre integración de Windows 7. Tenga en cuenta que siempre se deben instalar las actualizaciones &lt;em&gt;después&lt;/em&gt; de los paquetes de idiomas. De lo contrario la instalación del paquete de idiomas “macharía” los archivos dependientes del idioma que pudiera contener la actualización, y por lo tanto tendría que reinstalarla. &lt;/p&gt;  &lt;p&gt;Esto lo dejo como ejercicio al lector interesado, con posibilidad de discutirlo en la sección de comentarios de este artículo o bien en mis foros: &lt;a href="http://www.wintecnico.com/foros"&gt;http://www.wintecnico.com/foros&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1786471" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Integraci_F300_n/default.aspx">Integración</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Service+Pack+1/default.aspx">Service Pack 1</category></item><item><title>¡Feliz 2011!</title><link>http://msmvps.com/blogs/dmartin/archive/2011/01/01/161-feliz-2011.aspx</link><pubDate>Sat, 01 Jan 2011 14:34:31 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1785454</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=1785454</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1785454</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2011/01/01/161-feliz-2011.aspx#comments</comments><description>&lt;p&gt;Otro año que llega, y, aunque parece que fue ayer cuando comenzó este &lt;em&gt;blog&lt;/em&gt;, ya han pasado dos años y medio desde su nacimiento. En él he intentado ofrecer información interesante y útil sobre Windows y a la vez derribar algunos “mitos” o “inexactitudes” que han acompañado a este sistema operativo. Siempre lo he pretendido hacer desde una perspectiva neutral y nunca desde una perspectiva “fanboy”, ya que pienso que Windows no es la solución universal para cualquier necesidad. El futuro cercano va a deparar muchas novedades en lo que a los sistemas operativos respecta y Microsoft no debería dormirse en los laureles si quiere que Windows siga siendo un sistema operativo competitivo. Estoy seguro de que las mentes brillantes de Microsoft tendrán la capacidad de innovación y la creatividad necesarias para que así sea. &lt;/p&gt;  &lt;p&gt;Además, 2010 fue el año de nacimiento oficial de &lt;a href="http://www.wintecnico.com"&gt;www.wintecnico.com&lt;/a&gt;, un portal que pretende recoger soluciones a problemas con Windows (especialmente con Windows 7). La comunidad de &lt;a href="http://www.wintecnico.com/foros"&gt;www.wintecnico.com/foros&lt;/a&gt; cada vez es mayor (ya hay 42 miembros registrados), y en ella se han analizado y discutido problemas muy interesantes con Windows. &lt;/p&gt;  &lt;p&gt;En 2010 habrá novedades, seguro, y espero que sean novedades útiles tanto para las personas que quieren ver a Windows desde una perspectiva diferente, como para aquellas que simplemente quieren una solución para su problema y que tras perder horas buscando en Internet no han conseguido solucionar.&lt;/p&gt;  &lt;p&gt;¡Feliz año!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1785454" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Wintecnico/default.aspx">Wintecnico</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Offtopic/default.aspx">Offtopic</category></item><item><title>Cómo elegir la mejor imagen de fondo para la pantalla de bienvenida</title><link>http://msmvps.com/blogs/dmartin/archive/2010/12/16/c-243-mo-elegir-la-mejor-imagen-de-fondo-para-la-pantalla-de-bienvenida.aspx</link><pubDate>Thu, 16 Dec 2010 15:22:35 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1784456</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=1784456</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1784456</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/12/16/c-243-mo-elegir-la-mejor-imagen-de-fondo-para-la-pantalla-de-bienvenida.aspx#comments</comments><description>&lt;p&gt;Windows 7 es el primer sistema operativo de Microsoft que permite a los OEM establecer una imagen cualquiera como fondo de la pantalla de bienvenida. Sin embargo, como la pantalla de bienvenida de Windows 7 solo soporta imágenes de ciertas resoluciones, es posible que estas tengan que ser escaladas para que ocupen toda la pantalla, con el consiguiente efecto estético negativo y, por qué no, con la consiguiente degradación en el tiempo de arranque del sistema. Este artículo dará las pautas para lograr la imagen de fondo perfecta.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Qué resoluciones soporta Windows 7 para la imagen de fondo de la pantalla de bienvenida?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows 7 soporta las siguientes resoluciones: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;1280x1024 &lt;/li&gt;    &lt;li&gt;1024x768 &lt;/li&gt;    &lt;li&gt;1280x960 &lt;/li&gt;    &lt;li&gt;1600x1200 &lt;/li&gt;    &lt;li&gt;1440x900 &lt;/li&gt;    &lt;li&gt;1920x1200 &lt;/li&gt;    &lt;li&gt;1280x768 &lt;/li&gt;    &lt;li&gt;1360x768&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Además también se soportan las resoluciones análogas en estilo de orientación vertical, donde se intercambian ancho y alto, es decir: 1024x1280, 768x1024, etc.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;La clave es la &lt;em&gt;relación de aspecto&lt;/em&gt; de la pantalla&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Lo principal a la hora de elegir una resolución para la imagen de fondo de la pantalla de bienvenida es la relación de aspecto que tenga, entendiendo esta como el cociente entre ancho y alto (en píxeles). Aunque existen multitud de posibles resoluciones de pantalla, si contamos las más frecuentes y calculamos sus relaciones de aspecto, nos quedaremos con muchas menos. En el caso de las resoluciones de pantalla soportadas por Windows 7 para la imagen de fondo de la pantalla de bienvenida (que son las más frecuentes entre los usuarios), estas quedan agrupadas en 5 clases:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="444"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Relación de aspecto&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="242"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Resoluciones soportadas&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1,25&lt;/td&gt;        &lt;td valign="top" width="242"&gt;1280x1024&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1,33&lt;/td&gt;        &lt;td valign="top" width="242"&gt;1024x768, 1280x960 y 1600x1200&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1,60&lt;/td&gt;        &lt;td valign="top" width="242"&gt;1440x900 y 1920x1200&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1,67&lt;/td&gt;        &lt;td valign="top" width="242"&gt;1280x768&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1,77&lt;/td&gt;        &lt;td valign="top" width="242"&gt;1360x768&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A la hora de seleccionar una imagen para la pantalla de bienvenida, Windows buscará aquella cuya relación de aspecto coincida exacta o aproximadamente con alguna de las categorías anteriores. Una vez encontrada, el sistema busca entre las resoluciones de pantalla alguna que coincida exactamente con la resolución de pantalla del usuario. Esto se hace con el objetivo de evitar escalar la imagen, puesto que se trata de un procedimiento complejo computacionalmente. En caso de que no haya ninguna coincidencia, el sistema elegirá cualquiera de las resoluciones posibles (para la relación de aspecto hallada) y escalará la imagen convenientemente.&lt;/p&gt;  &lt;p&gt;Como conclusión, si su resolución de pantalla coincide exactamente con alguna de las soportadas por Windows 7, lo ideal es que cree una imagen con esa misma resolución. De no ser así, calcule la relación de aspecto de su pantalla (ancho / alto, si se trata de una orientación horizontal) y examine en la tabla anterior las resoluciones soportadas. En caso de que solo haya una alternativa, cree una imagen con esa misma resolución; en caso de que haya varias, pruebe con imágenes de esas resoluciones y elija la que mejor resultados le ofrezca.&lt;/p&gt;  &lt;p&gt;Por supuesto, si le gusta exprimir hasta la última gota el rendimiento de su sistema, puede cambiar la resolución de trabajo de la pantalla para que coincida con alguna de las soportadas, y evitar así que se tenga que escalar la imagen.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1784456" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consejos/default.aspx">Consejos</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Tips/default.aspx">Tips</category></item><item><title>¿Qué significan precisamente los rangos de fechas de la búsqueda de Windows 7?</title><link>http://msmvps.com/blogs/dmartin/archive/2010/12/03/191-qu-233-significan-precisamente-los-rangos-de-fechas-de-la-b-250-squeda-de-windows-7.aspx</link><pubDate>Fri, 03 Dec 2010 15:53:18 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1783500</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=1783500</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1783500</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/12/03/191-qu-233-significan-precisamente-los-rangos-de-fechas-de-la-b-250-squeda-de-windows-7.aspx#comments</comments><description>&lt;p&gt;Un usuario preguntaba qué representan exactamente los rangos de fecha de modificación que aparecen en el cuadro de búsqueda de Windows 7 (&lt;em&gt;hace mucho tiempo&lt;/em&gt;, &lt;em&gt;al principio de este mes&lt;/em&gt;, etc.). A modo de referencia, esta es la explicación de los correspondientes rangos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Hace mucho tiempo&lt;/strong&gt;: En algún año anterior al actual.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Al principio de este año&lt;/strong&gt;: Desde que comenzó el año actual hasta el final del mes pasado.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Al principio de este mes&lt;/strong&gt;: Desde que comenzó el mes hasta la semana antepasada.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;La semana pasada&lt;/strong&gt;: No requiere explicación.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Al principio de esta semana&lt;/strong&gt;: Desde que comenzó la semana hasta anteayer.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ayer&lt;/strong&gt;: No requiere explicación.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Espero que esto aclare un poco más las búsquedas por fecha de modificación en Windows 7, para que se sepa exactamente qué se puede esperar encontrar y qué no.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1783500" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Shell/default.aspx">Shell</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consultas/default.aspx">Consultas</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Curiosidades/default.aspx">Curiosidades</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Explorer/default.aspx">Explorer</category></item><item><title>El caso del fondo de escritorio inmutable</title><link>http://msmvps.com/blogs/dmartin/archive/2010/11/21/el-caso-del-fondo-de-escritorio-inmutable.aspx</link><pubDate>Sun, 21 Nov 2010 14:09:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1782696</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=1782696</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1782696</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/11/21/el-caso-del-fondo-de-escritorio-inmutable.aspx#comments</comments><description>&lt;p&gt;Con este artículo inicio una temática que apenas había tratado hasta ahora en el &lt;em&gt;blog&lt;/em&gt; y es la de programación para Windows y los fallos más comunes e interesantes que he ido viendo en Internet. Hoy vamos a ver un error no poco frecuente entre la gente que empieza a adentrarse en la programación para Windows.&lt;/p&gt;  &lt;p&gt;El caso de hoy es el de un usuario que quería cambiar el fondo de escritorio de su máquina de manera inmediata mediante un programa que hiciera uso de la API de programación de Windows. La función que nos proporciona la API para cambiar el fondo de escritorio es SystemParametersInfo, con el primer parámetro establecido a la constante SPI_SETDESKWALLPAPER. El programa que había escrito el usuario era, de manera simplificada, el siguiente:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;int _tmain(int argc, _TCHAR* argv[])      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; char wallString[200]; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; strcpy(wallString, &amp;quot;C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg&amp;quot;); &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)wallString, SPIF_SENDWININICHANGE);&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; return 0;      &lt;br /&gt;}&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Si examinamos la documentación de la función &lt;a href="http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx" target="_blank"&gt;SystemParametersInfo&lt;/a&gt;, el programa tiene buen aspecto: El primer parámetro, SPI_SETDESKWALLPAPER, le indica al sistema que lo que se va a cambiar es el fondo de escritorio; el segundo parámetro está establecido en 0, ya que no es aplicable cuando el primer parámetro está establecido en SPI_SETDESKWALLPAPER; el tercer parámetro es la cadena correspondiente al fondo de escritorio; y el último parámetro le indica al Windows que debe notificar del cambio de fondo a todas las ventanas de primer nivel del sistema, de forma que el cambio se vea inmediatamente.&lt;/p&gt;  &lt;p&gt;Sorprendentemente para el usuario, el código no funciona, aunque en otros sistemas antiguos lo había hecho perfectamente. ¿Cuál sería el problema?&lt;/p&gt;  &lt;p&gt;Vamos a fijarnos bien en la variable local “wallString”. Está declarada como un vector de tipo “char”. En C/C++, el tipo de datos “char” representa por defecto a un entero con signo entre –128 y 127 y, por lo tanto, ocupa un byte. La documentación de la función SystemParametersInfo dice que el tercer parámetro debe recibir una variable de tipo PVOID, que es un “alias” de un puntero a una dirección de memoria que contenga cualquier tipo de datos, es decir, lo que en C++ se expresa como void*. &lt;/p&gt;  &lt;p&gt;Aunque SystemParametersInfo venga documentada como función en MSDN, en realidad es una &lt;em&gt;macro&lt;/em&gt; de C que “delega” el trabajo a la verdadera función, dependiendo de si el programa está compilado como Unicode (SystemParametersInfoW) o no (SystemParametersInfoA). Así que hoy en día es más que probable que internamente el programa esté llamando a SystemParametersInfoW. La clave está en la interpretación de la cadena de caracteres que se pasa como tercer parámetro. El usuario estaba pasando una cadena ANSI (1 byte por caracter), mientras que el sistema la estaba interpretando como Unicode (2 bytes por caracter). Este es un esquema gráfico de lo que ocurre por lo bajo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/2570.Unicode_5F00_12F97DF3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Unicode" border="0" alt="Unicode" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/3568.Unicode_5F00_thumb_5F00_75475759.png" width="356" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Los números hexadecimales representan cada carácter (un dígito hexadecimal es medio byte). Al interpretar la cadena con caracteres anchos (de 2 bytes) como unidad básica, se traduce en una ristra de caracteres “extraños” y por consiguiente el fondo de escritorio no se cambia correctamente.&lt;/p&gt;  &lt;p&gt;Lo ideal hoy en día es usar Unicode en todo lugar. Si se usa el formato de carácter de Windows TCHAR, éste se convertirá en un carácter normal (char) en sistemas antiguos que no soportan Unicode y en un carácter ancho (wchar) en sistemas Unicode. La “T” que precede a “CHAR en “TCHAR” indica que se trata de un tipo de datos general que se convertirá apropiadamente en la versión ANSI o Unicode dependiendo de los parámetros de compilación. Si necesitamos un puntero en lugar de un único carácter, podemos usar el tipo LPTSTR (&lt;em&gt;Long Pointer to String&lt;/em&gt;). Este sería el programa resultante:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;int _tmain(int argc, _TCHAR* argv[])      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LPTSTR lpString = TEXT(&amp;quot;C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg&amp;quot;);&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, lpString, SPIF_SENDWININICHANGE);&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; return 0;      &lt;br /&gt;}&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;La moraleja del artículo es que siempre hay que tener en cuenta el tipo de cadena que empleemos. La API de Windows ofrece muchos nuevos tipos de datos de caracteres que conviene interiorizar para evitar este tipo de fallos y ser más productivos mientras se aprende programación usando la API de Windows. Otro punto destacado de la programación con cadenas es la posibilidad de incluir vulnerabilidades de seguridad con cierta facilidad. Trataremos este punto en un próximo artículo.&lt;/p&gt;  &lt;p&gt;En el futuro iré tratando otros problemas más complejos que pueden surgir al programar usando la API de Windows, especialmente casos en los que la documentación oficial no ofrece información, o bien la que ofrece es ambigua, o bien inexacta.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1782696" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Shell/default.aspx">Shell</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consultas/default.aspx">Consultas</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consejos/default.aspx">Consejos</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/API+de+Windows/default.aspx">API de Windows</category></item><item><title>Sobre las distintas opciones de actualización a Windows 7</title><link>http://msmvps.com/blogs/dmartin/archive/2010/11/07/sobre-las-distintas-opciones-de-actualizaci-243-n-a-windows-7.aspx</link><pubDate>Sun, 07 Nov 2010 13:04:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1781752</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=1781752</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1781752</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/11/07/sobre-las-distintas-opciones-de-actualizaci-243-n-a-windows-7.aspx#comments</comments><description>&lt;p&gt;En este art&amp;iacute;culo voy a resumir las posibilidades existentes de actualizaci&amp;oacute;n a Windows 7, tanto desde sistemas anteriores como desde versiones menos completas de este sistema operativo. Tambi&amp;eacute;n explicar&amp;eacute; en detalle en qu&amp;eacute; consiste Windows Anytime Upgrade, y por qu&amp;eacute; es t&amp;eacute;cnicamente diferente a lo habitualmente conocemos como una actualizaci&amp;oacute;n de sistema operativo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Posibilidades de actualizaci&amp;oacute;n&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Existen tres posibilidades de actualizaci&amp;oacute;n a Windows 7 dependiendo del sistema operativo y de la edici&amp;oacute;n de la que partamos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Actualizaci&amp;oacute;n no disponible:&lt;/strong&gt; T&amp;iacute;picamente estamos intentando actualizar desde Windows XP o sistemas anteriores. La &amp;uacute;nica opci&amp;oacute;n ser&amp;iacute;a realizar una instalaci&amp;oacute;n limpia, salvaguardando antes los datos de valor, o usando &lt;a target="_blank" href="http://windows.microsoft.com/es-ES/windows7/products/features/windows-easy-transfer"&gt;Windows Easy Transfer&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaci&amp;oacute;n disponible:&lt;/strong&gt; Si partimos de ciertas ediciones de Windows Vista (SP1 o superiores) existe la posibilidad de actualizar a Windows 7 sin perder datos mediante la t&amp;iacute;pica opci&amp;oacute;n de actualizaci&amp;oacute;n del programa de instalaci&amp;oacute;n. Si podemos permitirnos el tiempo necesario para realizar una instalaci&amp;oacute;n limpia, personalmente lo recomiendo a este tipo de actualizaci&amp;oacute;n, pues hereder&amp;aacute; los problemas que tuvi&amp;eacute;ramos en Windows Vista (y podr&amp;iacute;a a&amp;ntilde;adir nuevos). La instalaci&amp;oacute;n limpia siempre que sea posible es la manera mejor de hacer llegar Windows 7 a nuestro equipo &amp;ldquo;por la puerta grande&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WAU (&lt;em&gt;Windows Anytime Upgrade&lt;/em&gt;):&lt;/strong&gt; Esta opci&amp;oacute;n permite actualizar desde una edici&amp;oacute;n de Windows 7 a otra m&amp;aacute;s completa. T&amp;eacute;cnicamente el proceso de instalaci&amp;oacute;n no tiene que ver con una actualizaci&amp;oacute;n desde un sistema anterior y adem&amp;aacute;s podemos usar cualquier tipo de clave de Windows 7 que tengamos, no solamente las que adquiramos desde la web de Microsoft. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tabla resumen&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Una vez descritas las tres posibilidades de actualizaci&amp;oacute;n, detallo en esta tabla todas las posibilidades de actualizaci&amp;oacute;n a Windows 7:&lt;/p&gt;
&lt;table width="733" cellpadding="2" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;
&lt;p align="center"&gt;&lt;em&gt;Desde/Hacia&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="66" valign="top"&gt;
&lt;p align="center"&gt;7 &lt;em&gt;Starter&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="106" valign="top"&gt;
&lt;p align="center"&gt;&lt;em&gt;7 Home Basic&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="132" valign="top"&gt;
&lt;p align="center"&gt;&lt;em&gt;7 Home Premium&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="105" valign="top"&gt;
&lt;p align="center"&gt;&lt;em&gt;7 Professional&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="87" valign="top"&gt;
&lt;p align="center"&gt;&lt;em&gt;7 Enterpise&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="82" valign="top"&gt;
&lt;p align="center"&gt;&lt;em&gt;7 Ultimate&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;Vista Home Basic&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="132" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="105" valign="top"&gt;No&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;Vista Home Premium&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="105" valign="top"&gt;No&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;Vista Business&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;No&lt;/td&gt;
&lt;td width="105" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="87" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;Vista Enterprise&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;No&lt;/td&gt;
&lt;td width="105" valign="top"&gt;No&lt;/td&gt;
&lt;td width="87" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;td width="82" valign="top"&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;Vista Ultimate&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;No&lt;/td&gt;
&lt;td width="105" valign="top"&gt;No&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;S&amp;iacute;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;7 Starter&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;&lt;strong&gt;Rep.&lt;/strong&gt;&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;td width="105" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;7 Home Basic&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;&lt;strong&gt;Rep.&lt;/strong&gt;&lt;/td&gt;
&lt;td width="132" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;td width="105" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;7 Home Premium&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;&lt;strong&gt;Rep.&lt;/strong&gt;&lt;/td&gt;
&lt;td width="105" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;7 Professional&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;No&lt;/td&gt;
&lt;td width="105" valign="top"&gt;&lt;strong&gt;Rep.&lt;/strong&gt;&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;7 Enterprise&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;No&lt;/td&gt;
&lt;td width="105" valign="top"&gt;No&lt;/td&gt;
&lt;td width="87" valign="top"&gt;&lt;strong&gt;Rep.&lt;/strong&gt;&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;WAU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="153" valign="top"&gt;&lt;em&gt;7 Ultimate&lt;/em&gt;&lt;/td&gt;
&lt;td width="66" valign="top"&gt;No&lt;/td&gt;
&lt;td width="106" valign="top"&gt;No&lt;/td&gt;
&lt;td width="132" valign="top"&gt;No&lt;/td&gt;
&lt;td width="105" valign="top"&gt;No&lt;/td&gt;
&lt;td width="87" valign="top"&gt;No&lt;/td&gt;
&lt;td width="82" valign="top"&gt;&lt;strong&gt;Rep.&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Nota:&lt;/span&gt; Las versiones de Windows Vista deben tener instalado como m&amp;iacute;nimo Service Pack 1.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;Leyenda:&lt;/span&gt; &amp;ldquo;No&amp;rdquo; &amp;ndash; No est&amp;aacute; disponible la actualizaci&amp;oacute;n. &amp;ldquo;S&amp;iacute;&amp;rdquo; &amp;ndash; Actualizaci&amp;oacute;n disponible. &amp;ldquo;Rep.&amp;rdquo; &amp;ndash; Reparaci&amp;oacute;n del sistema operativo. &amp;ldquo;WAU&amp;rdquo; &amp;ndash; &lt;em&gt;Windows Anytime Upgrade&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Para facilitar la lectura, he marcado en la tabla en negrita las combinaciones posibles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows Anytime Upgrade &amp;iquest;en qu&amp;eacute; consiste realmente?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Windows Anytime Upgrade (WAU en adelante) es una caracter&amp;iacute;stica incorporada a Windows 7 que permite actualizar el sistema operativo a una edici&amp;oacute;n superior, si existe un camino de actualizaci&amp;oacute;n (ver tabla anterior). Al iniciar WAU el sistema nos invitar&amp;aacute; a comprar una clave de producto en el sitio web de Microsoft o bien proporcionar una clave (ya sea comprada en la tienda de Microsoft, de actualizaci&amp;oacute;n o versi&amp;oacute;n completa, perteneciente a una suscripci&amp;oacute;n t&amp;eacute;cnica MSDN/Technet, etc.). Cualquier clave &amp;ldquo;retail&amp;rdquo; o de actualizaci&amp;oacute;n de esa edici&amp;oacute;n superior de Windows 7 ser&amp;aacute; admitida por WAU, siempre y cuando exista un camino soportado de actualizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;WindowsAnytimeUpgrade.exe es el ejecutable principal. Al ejecutarlo, el sistema comprueba si la edici&amp;oacute;n es actualizable mediante WAU y si no hay aplicada una directiva de grupo (claves de registro Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\WAU, bajo las ramas HKCU y HKLM, valor &lt;em&gt;Disabled&lt;/em&gt; con contenido 1).&lt;/p&gt;
&lt;p&gt;Cabe destacar que podemos ejecutar WindowsAnyTimeUpgrade.exe desde la l&amp;iacute;nea de comandos y que admite como par&amp;aacute;metro la clave de la edici&amp;oacute;n de Windows 7 a la que queremos pasar. Por tanto, podemos utilizar este ejecutable en bater&amp;iacute;as de &lt;em&gt;scripts&lt;/em&gt; que automaticen todo el procedimiento. El sistema seguidamente procede a validar la clave de producto que le hemos pasado, as&amp;iacute; como comprobar que el sistema est&amp;eacute; activado correctamente. De no ser as&amp;iacute;, el sistema nos ofrecer&amp;aacute; la opci&amp;oacute;n de activarlo en este momento. &lt;/p&gt;
&lt;p&gt;Antes de comenzar con la actualizaci&amp;oacute;n propiamente dicha, Windows 7 crea un punto de restauraci&amp;oacute;n por si algo fuera mal. La actualizaci&amp;oacute;n se realiza mediante el ejecutable DISM.exe, que activa y configura los componentes correspondientes a la versi&amp;oacute;n de Windows 7 a la que queremos actualizar. No necesitaremos disponer de un DVD de Windows 7 con esa edici&amp;oacute;n, puesto que al instalar cualquier edici&amp;oacute;n de Windows 7 est&amp;aacute; presente en nuestro disco todo el contenido completo del sistema operativo en su edici&amp;oacute;n Ultimate. El proceso de actualizaci&amp;oacute;n de WAU es similar a lo que ocurre cuando a&amp;ntilde;adimos caracter&amp;iacute;sticas de Windows (como IIS o Telnet) desde Panel de control, Programas.&lt;/p&gt;
&lt;p&gt;Una vez acabada la actualizaci&amp;oacute;n de WAU, se instalar&amp;aacute;n actualizaciones de Windows Update para que el sistema resultante quede completamente al d&amp;iacute;a. Este paso se realiza si la configuraci&amp;oacute;n del usuario con respecto a las actualizaciones autom&amp;aacute;ticas de Windows Update no lo impide. Algunas actualizaciones no se instalar&amp;aacute;n, y son aquellas que requieren intervenci&amp;oacute;n por parte del usuario, por ejemplo para aceptar un EULA (para que la experiencia de usuario no sea mala). Si fallara por alg&amp;uacute;n motivo la instalaci&amp;oacute;n de las actualizaciones, no se detendr&amp;aacute; ni fallar&amp;aacute; el proceso de actualizaci&amp;oacute;n de WAU.&lt;/p&gt;
&lt;p&gt;Una vez finalizada la actualizaci&amp;oacute;n, se a&amp;ntilde;ade una entrada de registro a la clave RunOnce del registro para que se ejecute WindowsAnytimeUpgradeResults.exe nada m&amp;aacute;s volver a iniciar sesi&amp;oacute;n. Esto sirve para informar al usuario de si el proceso de actualizaci&amp;oacute;n concluy&amp;oacute; con &amp;eacute;xito o no.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Qu&amp;eacute; hacer en caso de fallo?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si WAU no ha podido actualizar nuestra edici&amp;oacute;n de Windows 7, hay que examinar los ficheros de reporte. Estos son los ficheros de reporte que deberemos examinar en primer lugar en busca de informaci&amp;oacute;n precisa sobre lo que ha ocurrido:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;%UserProfile%\AppData\Local\Microsoft\Windows\Windows Anytime Upgrade\*.log &lt;/li&gt;
&lt;li&gt;%SystemRoot%\Logs\CBS\CBS.log. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Algunas soluciones generales que quiz&amp;aacute; solucionen el problema son reiniciar el sistema por si hubiera operaciones pendientes que estuvieran interfiriendo en la actualizaci&amp;oacute;n, analizar el disco con la herramienta Chkdsk, o usar &lt;a target="_blank" href="http://support.microsoft.com/kb/947821/es"&gt;esta&lt;/a&gt; herramienta de Microsoft.&lt;/p&gt;
&lt;p&gt;Si tuviera problemas con WAU que no ha podido solucionar, lo mejor es que abra un nuevo tema en mis foros, &lt;a href="http://www.wintecnico.com/foros"&gt;http://www.wintecnico.com/foros&lt;/a&gt;, para facilitar su seguimiento.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1781752" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Funcionamiento/default.aspx">Funcionamiento</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Instalaci_26002300_243_3B00_n/default.aspx">Instalaci&amp;#243;n</category></item><item><title>Cómo crear un DVD de Windows 7 (x86/x64) con cuatro idiomas integrados</title><link>http://msmvps.com/blogs/dmartin/archive/2010/10/23/c-243-mo-crear-un-dvd-de-windows-7-x86-x64-con-cuatro-idiomas-integrados.aspx</link><pubDate>Sat, 23 Oct 2010 11:41:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1780577</guid><dc:creator>dmartin</dc:creator><slash:comments>11</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1780577</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1780577</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/10/23/c-243-mo-crear-un-dvd-de-windows-7-x86-x64-con-cuatro-idiomas-integrados.aspx#comments</comments><description>&lt;p&gt;En otros art&amp;iacute;culos expliqu&amp;eacute; c&amp;oacute;mo integrar &lt;a target="_blank" href="http://www.wintecnico.com/articulos/como-integrar-en-un-dvd-las-versiones-de-32-bits-y-64-bits-de-windows-7"&gt;varias arquitecturas de Windows 7&lt;/a&gt; en un mismo DVD, as&amp;iacute; como &lt;a target="_blank" href="http://www.wintecnico.com/articulos/como-integrar-en-un-dvd-varios-idiomas-de-windows-7"&gt;varios idiomas de Windows 7&lt;/a&gt;. En este art&amp;iacute;culo vamos a combinar las t&amp;eacute;cnicas de ambos art&amp;iacute;culos para explicar, con todo detalle, c&amp;oacute;mo crear un DVD de Windows 7 Ultimate que contenga las ediciones de 32 y de 64 bits, as&amp;iacute; como 3 idiomas: ingl&amp;eacute;s (Estados Unidos), espa&amp;ntilde;ol, portugu&amp;eacute;s (Portugal) y portugu&amp;eacute;s (Brasil). Debido a la extensi&amp;oacute;n del art&amp;iacute;culo, es recomendable que lo imprima y guarde como referencia para consultarlo con m&amp;aacute;s comodidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preliminares&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Antes de comenzar, deber&amp;aacute; disponer de una licencia de Windows 7 Ultimate as&amp;iacute; como acceso tanto a la versi&amp;oacute;n de 32 bits como a la de 64 bits (en formato DVD o ISO). Tambi&amp;eacute;n podr&amp;iacute;a seguir este tutorial con Windows 7 Enterprise, pues es la otra edici&amp;oacute;n de Windows 7 que permite instalar varios idiomas en un mismo equipo. Sin p&amp;eacute;rdida de generalidad, en este tutorial supondremos que el idioma de Windows 7 Ultimate 32 bits y 64 bits sobre el que se realizar&amp;aacute; la integraci&amp;oacute;n tiene como idioma base el ingl&amp;eacute;s (Estados Unidos).&lt;/p&gt;
&lt;p&gt;Para realizar la integraci&amp;oacute;n, vamos a usar las herramientas incluidas en el Windows AIK, que se puede descargar gratuitamente desde &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34&amp;amp;displayLang=es" title="http://www.microsoft.com/downloads/details.aspx?FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34&amp;amp;displayLang=es"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34&amp;amp;displayLang=es&lt;/a&gt;. Inst&amp;aacute;lelas en una m&amp;aacute;quina destinada a realizar la integraci&amp;oacute;n. Esta m&amp;aacute;quina deber&amp;aacute; disponer de un m&amp;iacute;nimo de 15 GB de espacio libre en disco, aproximadamente. Quiz&amp;aacute; los requerimientos exactos en su caso sean menos exigentes, pero es recomendable que haya suficiente espacio en disco en todo momento para evitar corromper la imagen resultante.&lt;/p&gt;
&lt;p&gt;Por supuesto, deber&amp;aacute; descargar los paquetes de idiomas espa&amp;ntilde;ol, portugu&amp;eacute;s (Portugal) y portugu&amp;eacute;s (Brasil), tanto en sus versiones de 32 bits, como sus versiones en 64 bits. Para ahorrarle trabajo, aqu&amp;iacute; dejo los correspondientes enlaces al sitio de Windows Update:&lt;/p&gt;
&lt;p&gt;Espa&amp;ntilde;ol (32 bits): &lt;a href="http://download.windowsupdate.com/msdownload/update/software/updt/2009/08/windows6.1-kb972813-x86-es-es_1943a073d8f00e387301deb22cd177bf77319ee8.exe" title="windows6.1-kb972813-x86-es-es_1943a073d8f00e387301deb22cd177bf77319ee8.exe"&gt;windows6.1-kb972813-x86-es-es_1943a073d8f00e387301deb22cd177bf77319ee8.exe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Espa&amp;ntilde;ol (64 bits): &lt;a href="http://download.windowsupdate.com/msdownload/update/software/updt/2009/08/windows6.1-kb972813-x64-es-es_2e593c26d9e23ad8176224a53c68a04f996ee014.exe" title="windows6.1-kb972813-x64-es-es_2e593c26d9e23ad8176224a53c68a04f996ee014.exe"&gt;windows6.1-kb972813-x64-es-es_2e593c26d9e23ad8176224a53c68a04f996ee014.exe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Portugu&amp;eacute;s (Portugal) (32 bits): &lt;a href="http://download.windowsupdate.com/msdownload/update/software/updt/2009/08/windows6.1-kb972813-x86-pt-pt_4165bd9cd083abd8ddd81986e18b1fd86aab5ce9.exe" title="windows6.1-kb972813-x86-pt-pt_4165bd9cd083abd8ddd81986e18b1fd86aab5ce9.exe"&gt;windows6.1-kb972813-x86-pt-pt_4165bd9cd083abd8ddd81986e18b1fd86aab5ce9.exe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Portugu&amp;eacute;s (Portugal) (64 bits): &lt;a href="http://download.windowsupdate.com/msdownload/update/software/updt/2009/08/windows6.1-kb972813-x64-pt-pt_f8310aa4a73841aec29b3f4e74ecaece56b695e9.exe" title="windows6.1-kb972813-x64-pt-pt_f8310aa4a73841aec29b3f4e74ecaece56b695e9.exe"&gt;windows6.1-kb972813-x64-pt-pt_f8310aa4a73841aec29b3f4e74ecaece56b695e9.exe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Portugu&amp;eacute;s (Brasil) (32 bits): &lt;a href="http://download.windowsupdate.com/msdownload/update/software/updt/2009/08/windows6.1-kb972813-x86-pt-br_0a3fe79820d6d199dd43495d4efa5c40f270e45a.exe" title="windows6.1-kb972813-x86-pt-br_0a3fe79820d6d199dd43495d4efa5c40f270e45a.exe"&gt;windows6.1-kb972813-x86-pt-br_0a3fe79820d6d199dd43495d4efa5c40f270e45a.exe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Portugu&amp;eacute;s (Brasil) (64 bits): &lt;a href="http://download.windowsupdate.com/msdownload/update/software/updt/2009/08/windows6.1-kb972813-x64-pt-br_276b65f3b6b2657c8fe936f9841dc1243e02dc7b.exe" title="windows6.1-kb972813-x64-pt-br_276b65f3b6b2657c8fe936f9841dc1243e02dc7b.exe"&gt;windows6.1-kb972813-x64-pt-br_276b65f3b6b2657c8fe936f9841dc1243e02dc7b.exe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estructura de directorios inicial&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para comenzar, cree los siguientes directorios dentro de alguna carpeta vac&amp;iacute;a dedicada a este procedimiento de integraci&amp;oacute;n:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;\Distribution &lt;/li&gt;
&lt;li&gt;\Offline &lt;/li&gt;
&lt;li&gt;\ScratchDir &lt;/li&gt;
&lt;li&gt;\Boot &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Copie en el directorio \Distribution el contenido del DVD o ISO de Windows 7 Ultimate de 32 bits. Cree dentro de este directorio un subdirectorio de nombre \langpacks que dentro contenga los subdirectorios \es-es, \pt-pt y \pt-br. Deje dentro de cada uno de estos subdirectorios el paquete de idiomas en formato .cab correspondiente a cada idioma. Los paquetes de 32 bits denom&amp;iacute;nelos &amp;quot;Lp.cab&amp;rdquo; y los de 64 bits &amp;ldquo;Lp64.cab&amp;rdquo;. Para extraer el fichero lp.cab a partir del .exe, haga doble clic sobre el .exe y en el momento que aparezca el fichero .cab en el mismo directorio que el fichero .exe, c&amp;aacute;mbielo moment&amp;aacute;neamente de nombre (para evitar que Windows lo elimine a los pocos segundos). Cancele la instalaci&amp;oacute;n del paquete de idiomas.&lt;/p&gt;
&lt;p&gt;Cree aparte unas carpetas temporales, por ejemplo &lt;/p&gt;
&lt;p&gt;C:\LPs\es-es\expanded&lt;/p&gt;
&lt;p&gt;C:\LPs\pt-pt\expanded&lt;/p&gt;
&lt;p&gt;C:\LPs\pt-br\expanded&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n abra una ventana de l&amp;iacute;nea de comandos (&lt;em&gt;Inicio&lt;/em&gt;, &lt;em&gt;Todos los programas&lt;/em&gt;, &lt;em&gt;Accesorios&lt;/em&gt;, &lt;em&gt;S&amp;iacute;mbolo de sistema&lt;/em&gt;) y teclee estos comandos:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;expand.exe -f:* &amp;lt;Ruta Distribution&amp;gt;\langpacks\es-es\lp.cab C:\LPs\es-es\expanded&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;expand.exe -f:* &amp;lt;Ruta Distribution&amp;gt;\langpacks\pt-pt\lp.cab C:\LPs\pt-pt\expanded&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;expand.exe -f:* &amp;lt;Ruta Distribution&amp;gt;\langpacks\pt-br\lp.cab C:\LPs\pt-br\expanded&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;xcopy C:\LPs\es-es\expanded\sources\license\* &amp;lt;Ruta Distribution&amp;gt;\sources\license\ /cherkyi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;xcopy C:\LPs\es-es\expanded\setup\sources\* &amp;lt;Ruta Distribution&amp;gt;\sources\ /cherkyi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;xcopy C:\LPs\pt-pt\expanded\sources\license\* &amp;lt;Ruta Distribution&amp;gt;\sources\license\ /cherkyi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;xcopy C:\LPs\pt-pt\expanded\setup\sources\* &amp;lt;Ruta Distribution&amp;gt;\sources\ /cherkyi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;xcopy C:\LPs\pt-br\expanded\sources\license\* &amp;lt;Ruta Distribution&amp;gt;\sources\license\ /cherkyi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;xcopy C:\LPs\pt-br\expanded\setup\sources\* &amp;lt;Ruta Distribution&amp;gt;\sources\ /cherkyi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Este deber&amp;iacute;a ser el aspecto final del directorio \Distribution:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/4380.DVDIntegrado_5F00_78F57708.png"&gt;&lt;img height="214" width="578" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/5861.DVDIntegrado_5F00_thumb_5F00_0A753C07.png" alt="Aspecto del directorio \Distribution en Explorador de Windows." border="0" title="Aspecto del directorio \Distribution en Explorador de Windows." style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y este ser&amp;iacute;a parte del contenido del subdirectorio \sources:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/7532.DVDIntegradoSources_5F00_31EC0871.png"&gt;&lt;img height="385" width="572" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/8507.DVDIntegradoSources_5F00_thumb_5F00_764BF9B0.png" alt="Aspecto del subdirectorio \sources en Explorador de Windows" border="0" title="Aspecto del directorio \Distribution en Explorador de Windows." style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En este punto ya disponemos de un directorio \Distribution con todo preparado para un albergar varios idiomas. El resto del art&amp;iacute;culo tratar&amp;aacute; sobre la integraci&amp;oacute;n de los paquetes de idiomas en cada edici&amp;oacute;n de Windows 7, juntar ambas en una misma imagen Install.wim, e integrar los paquetes de idiomas en la imagen de instalaci&amp;oacute;n (Boot.wim).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Montaje de la imagen de 32 bits e integraci&amp;oacute;n de los paquetes de idiomas&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Abra &lt;em&gt;Inicio&lt;/em&gt;, &lt;em&gt;Todos los programas&lt;/em&gt;, &lt;em&gt;Microsoft Windows AIK&lt;/em&gt;, seleccione &lt;em&gt;Deployment Tools Command Prompt&lt;/em&gt; con el bot&amp;oacute;n derecho del rat&amp;oacute;n y escoja &lt;em&gt;Ejecutar como administrador&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;En este art&amp;iacute;culo la edici&amp;oacute;n de Windows 7 copiada en el directorio Distribution contiene varias ediciones de Windows 7 32 bits. Concretamente, la imagen con &amp;iacute;ndice 5 es la correspondiente a Windows 7 Ultimate, y es la que se va a montar. Para ver el listado de im&amp;aacute;genes contenidas en un fichero .wim, teclee este comando y pulse INTRO:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Imagex /info &amp;lt;Ruta Distribucion&amp;gt;\sources\install.wim&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;F&amp;iacute;jese en el atributo &amp;ldquo;index&amp;rdquo; de las etiquetas &amp;ldquo;image&amp;rdquo; para identificar la imagen de Windows 7 Ultimate.&lt;/p&gt;
&lt;p&gt;En la ventana de l&amp;iacute;nea de comandos teclee el siguiente comando y pulse INTRO:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /Mount-WIM /WimFile:&amp;lt;Ruta Distribution&amp;gt;\sources\install.wim /index:5 /MountDir:&amp;lt;Ruta Offline&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n vamos a instalar los 3 paquetes de idiomas de 32 bits en la imagen que acabamos de montar:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /Image:&amp;lt;Ruta Offline&amp;gt; /ScratchDir:&amp;lt;Ruta ScratchDir&amp;gt; /Add-Package /PackagePath:&amp;lt;Ruta Distribution&amp;gt;\langpacks\e &lt;br /&gt;s-es\lp.cab /PackagePath:&amp;lt;Ruta Distribution&amp;gt;\langpacks\pt-pt\lp.cab /PackagePath:&amp;lt;Ruta Distribution&amp;gt;\langpacks\pt-br\lp.cab&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tenga en cuenta que esta operaci&amp;oacute;n podr&amp;iacute;a tardar bastantes miinutos, pues se est&amp;aacute;n instalando 3 paquetes de idiomas en la imagen &lt;em&gt;offline&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n se debe volver a generar el fichero Lang.ini contenido en el directorio \Distribution\sources. Para ello, introduzca este comando:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /image:&amp;lt;Ruta Offline&amp;gt; /Gen-LangINI /distribution:&amp;lt;Ruta Distribution&amp;gt; /Set-AllIntl:en-us&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Seguidamente, capture el contenido de la imagen de Windows 7 Ultimate montada con los paquetes de idiomas integrados para generar un nuevo fichero .wim. Antes de nada, cree un directorio C:\W7, que contendr&amp;aacute; la imagen resultante.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Imagex /capture &amp;lt;Ruta Offline&amp;gt; C:\W7\install.wim &amp;quot;Windows 7 Ultimate (x86)&amp;quot; &amp;quot;Windows 7 Ultimate (x86)&amp;quot; /flags &amp;quot;Ultimate&amp;quot; /verify /compress maximum&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Este procedimiento podr&amp;iacute;a tardar bastante tiempo, as&amp;iacute; como consumir un alto porcentaje de CPU, pues se est&amp;aacute;n aplicando algoritmos complejos de compresi&amp;oacute;n para que la imagen ocupe lo m&amp;iacute;nimo posible.&lt;/p&gt;
&lt;p&gt;Una vez finalizada la integraci&amp;oacute;n, debe desmontar la imagen para liberar el directorio \Offline:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /unmount-WIM /MountDir:&amp;lt;Ruta Offline&amp;gt; /Commit&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hacemos lo mismo con la edici&amp;oacute;n de 64 bits&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ya tenemos la mitad de lo que queremos conseguir, nos falta integrar la edici&amp;oacute;n de 64 bits, con sus correspondientes paquetes de idiomas. Copie en un directorio temporal el fichero \sources\install.wim de su DVD o ISO de Windows 7 64 bits. A continuaci&amp;oacute;n siga los mismos pasos anteriores de montaje de la imagen en el directorio /Offline, integre los paquetes de idiomas siguiendo el mismo comando que el ya citado (Ojo, tenga en cuenta que debe integrar los ficheros Lp64.cab) y capture la imagen de modo que se agregue a la imagen que ya tiene creada, con este comando:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Imagex /append &amp;lt;Ruta Offline&amp;gt;&amp;nbsp; C:\W7\install.wim&amp;nbsp; &amp;ldquo;Windows 7 Ultimate (x64)&amp;rdquo; /verify&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ya solo queda desmontar la imagen de 64 bits mediante el comando &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /unmount-WIM /MountDir:&amp;lt;Ruta Offline&amp;gt; /Commit&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sustituya el fichero \Distribution\sources\install.wim por el nuevo fichero C:\W7\install.wim.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Modificaci&amp;oacute;n de la imagen Boot.wim&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Resta por agregar los paquetes de idiomas a la imagen de instalaci&amp;oacute;n y preinstalaci&amp;oacute;n (Windows PE) de Windows 7.&lt;/p&gt;
&lt;p&gt;En primer lugar, extraiga en unas carpetas temporales el contenido del directorio \WinPE_LangPacks\x86 de la ISO de Windows AIK; puede quedarse solamente con las subcarpetas es-es, pt-pt y pt-br y eliminar el resto, por ejemplo:&lt;/p&gt;
&lt;p&gt;C:\WinPE_LPs\es-es&lt;/p&gt;
&lt;p&gt;C:\WinPE_LPs\pt-pt&lt;/p&gt;
&lt;p&gt;C:\WinPE_LPs\pt-br&lt;/p&gt;
&lt;p&gt;En la ventana de l&amp;iacute;nea de comandos que est&amp;aacute; abierta, teclee lo siguiente para montar la imagen de Windows PE en el directorio \Boot que cre&amp;oacute; al principio del art&amp;iacute;culo:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /Mount-WIM /WimFile:&amp;lt;Ruta Distribution&amp;gt;\sources\boot.wim /index:1 /MountDir:&amp;lt;Ruta Boot&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Teclee este comando para instalar los paquetes de idiomas:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /Image:&amp;lt;Ruta Boot&amp;gt; /Add-Package /PackagePath:C:\WinPE_LPs\es-es\lp.cab /PackagePath:C:\WinPE_LPs\pt-pt\lp.cab /PackagePath:C:\WinPE_LPs\pt-br\lp.cab&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cuando finalice la instalaci&amp;oacute;n, teclee este comando para guardar y desmontar la imagen:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /unmount-WIM /MountDir:&amp;lt;Ruta Boot&amp;gt; /Commit&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n debe montarse la imagen de Windows Setup (imagen n&amp;uacute;mero 2) de Boot.wim:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /Mount-WIM /WimFile:&amp;lt;Ruta Distribution&amp;gt;\sources\boot.wim /index:2 /MountDir:&amp;lt;Ruta Boot&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Instalamos los paquetes de idiomas:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /Mount:&amp;lt;Ruta Boot&amp;gt; /Add-Package /PackagePath:C:\WinPE_LPs\es-es\lp.cab /PackagePath:C:\WinPE_LPs\es-es\winpe-setup_es-es.cab /PackagePath:C:\WinPE_LPs\es-es\winpe-setup-client_es-es.cab /PackagePath:C:\WinPE_LPs\pt-pt\lp.cab /PackagePath:C:\WinPE_LPs\pt-pt\winpe-setup_pt-pt.cab /PackagePath:C:\WinPE_LPs\pt-pt\winpe-setup-client_pt-pt.cab /PackagePath:C:\WinPE_LPs\pt-br\lp.cab /PackagePath:C:\WinPE_LPs\pt-br\winpe-setup_pt-br.cab /PackagePath:C:\WinPE_LPs\pt-br\winpe-setup-client_pt-br.cab&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Salve los cambios:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dism /unmount-WIM /MountDir:&amp;lt;Ruta Boot&amp;gt; /Commit&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creaci&amp;oacute;n de una imagen ISO y grabaci&amp;oacute;n en un DVD&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ya tenemos nuestro Windows 7 Ultimate x86/x64 con cuatro idiomas integrados. Solo nos queda generar una imagen ISO con Oscdimg.exe (incluido tambi&amp;eacute;n en el Windows AIK) y grabarla en un DVD.&lt;/p&gt;
&lt;p&gt;Como la imagen tiene un tama&amp;ntilde;o superior a 4,5 GB, es necesario indicarle a Oscdimg.exe el orden de los archivos de arranque para asegurar que estos se sit&amp;uacute;en al principio de la imagen. Para ello, abra Bloc de notas, copie y pegue este texto y gu&amp;aacute;rdelo como C:\Docs\Bootorder.txt, por ejemplo:&lt;/p&gt;
&lt;p&gt;boot\bcd &lt;br /&gt;boot\boot.sdi &lt;br /&gt;boot\bootfix.bin &lt;br /&gt;boot\bootsect.exe &lt;br /&gt;boot\etfsboot.com &lt;br /&gt;boot\memtest.efi &lt;br /&gt;boot\memtest.exe &lt;br /&gt;boot\en-us\bootsect.exe.mui &lt;br /&gt;boot\fonts\chs_boot.ttf &lt;br /&gt;boot\fonts\cht_boot.ttf &lt;br /&gt;boot\fonts\jpn_boot.ttf &lt;br /&gt;boot\fonts\kor_boot.ttf &lt;br /&gt;boot\fonts\wgl4_boot.ttf &lt;br /&gt;sources\boot.wim&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n ejecute este comando en la l&amp;iacute;nea de comandos que tiene abierta (respete al pie de la letra los espacios):&lt;/p&gt;
&lt;p&gt;&lt;em&gt;oscdimg -m -n -yoC:\Docs\bootorder.txt &amp;ndash;l&amp;rdquo;Windows7_x86_x64_MultiLanguage&amp;rdquo; &amp;ndash;b&amp;lt;Ruta Distribution&amp;gt;\boot\etfsboot.com &amp;lt;Ruta Distribution&amp;gt; &amp;lt;Ruta ISO&amp;gt;\Windows7_x86_x64_en-us_es-es_pt-pt_pt-br.iso&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cuando finalice la creaci&amp;oacute;n de la imagen ISO, gr&amp;aacute;bela en un DVD usando por ejemplo la herramienta de grabaci&amp;oacute;n de im&amp;aacute;genes de Windows 7 (simplemente haga doble clic sobre la imagen para arrancar esta herramienta). Cuando arranque desde el DVD y proceda a instalar el sistema operativo, el programa de instalaci&amp;oacute;n le invitar&amp;aacute; a seleccionar su idioma nada m&amp;aacute;s comenzar:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/5367.Seleccion_5F00_idioma_5F00_4FD9F098.png"&gt;&lt;img height="371" width="510" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin.metablogapi/6740.Seleccion_5F00_idioma_5F00_thumb_5F00_74B76577.png" alt="Pantalla de selecci&amp;oacute;n del idioma de instalaci&amp;oacute;n de Windows 7." border="0" title="Pantalla de selecci&amp;oacute;n del idioma de instalaci&amp;oacute;n de Windows 7." style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusi&amp;oacute;n&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Este art&amp;iacute;culo ha explicado paso a paso y detalladamente c&amp;oacute;mo crear un DVD de Windows 7 Ultimate que contenga ambas arquitecturas (32 bits y 64 bits), as&amp;iacute; como cuatro idiomas. Los idiomas est&amp;aacute;n disponibles tanto externamente a la imagen (en la carpeta \langpacks de la nueva ISO) como integrados en las im&amp;aacute;genes Install.wim y Boot.wim. Con el primer Service Pack de Windows 7 a la vuelta de la esquina, explicar&amp;eacute; pr&amp;oacute;ximamente c&amp;oacute;mo crear un DVD de Windows 7 con SP1 integrado, partiendo de este 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=1780577" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Integraci_26002300_243_3B00_n/default.aspx">Integraci&amp;#243;n</category></item><item><title>Tutorial sobre Windbg [Parte VI]</title><link>http://msmvps.com/blogs/dmartin/archive/2010/10/16/tutorial-sobre-windbg-parte-vi.aspx</link><pubDate>Sun, 17 Oct 2010 00:23:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1780106</guid><dc:creator>dmartin</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1780106</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1780106</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/10/16/tutorial-sobre-windbg-parte-vi.aspx#comments</comments><description>&lt;p&gt;En la quinta parte de este tutorial introductorio de depuración de aplicaciones vimos algunos comandos de Windbg que nos permiten mostrar información sobre la pila de ejecución en un determinado momento, una tarea bastante cotidiana en el ámbito de la depuración. En esta parte veremos algunas otras tareas relacionadas con la pila de ejecución y los correspondientes comandos de Windbg que nos permite llevarlas a cabo.&lt;/p&gt;  &lt;p&gt;Puede darse el caso de que necesitemos saber el espacio que ocupa cada marco de pila de una traza de pila concreta. Para ello podemos obtenerlo de dos formas: Aplicando la teoría que vimos en la parte anterior, el tamaño de cada marco de pila se podría obtener restando la dirección del puntero base (registro ebp) del marco de pila anterior a la del marco de pila actual. Recuerde que las direcciones de los punteros base aparecen bajo la columna &amp;quot;ChildEBP” en la salida de la familia de comandos k* de Windbg. Alternativamente, se puede hacer uso del comando &lt;strong&gt;kf&lt;/strong&gt;, que hace todo este cálculo por nosotros. La salida de este comando nos mostrará el espacio ocupado por cada marco de pila, exceptuando el actual. Esta es una salida de ejemplo del comando kf de Windbg:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;0:000&amp;gt; kf      &lt;br /&gt;&amp;#160; Memory&amp;#160; ChildEBP RetAddr&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0020f868 77c0e351 ntdll!LdrpDoDebuggerBreak+0x2c       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 15c 0020f9c4 77bf9048 ntdll!LdrpInitializeProcess+0x125c       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 50 0020fa14 77beb365 ntdll!_LdrpInitialize+0x78       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10 0020fa24 00000000 ntdll!LdrInitializeThunk+0x10       &lt;br /&gt;&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;A modo de ejemplo, vamos a calcular el tamaño del segundo marco de pila. Tenemos que restar las direcciones 0020f9c4 y 0020f868, que coincide con el contenido actual del registro ebp. Windbg incorpora un comando muy práctico que nos permite evaluar este tipo de expresiones, &lt;strong&gt;?&lt;/strong&gt;:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;0:000&amp;gt; ? 0020f9c4-0020f868      &lt;br /&gt;Evaluate expression: 348 = 0000015c&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Como vemos, el resultado hexadecimal obtenido es 15c, que coincide con lo que nos muestra el comando kf.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Otro comando relacionado que nos permite evaluar y convertir expresiones a diferentes formatos es &lt;strong&gt;.formats&lt;/strong&gt;. Veamos un ejemplo de la salida de este comando:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;0:000&amp;gt; .formats 0020f9c4-0020f868      &lt;br /&gt;Evaluate expression:       &lt;br /&gt;&amp;#160; Hex:&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0000015c       &lt;br /&gt;&amp;#160; Decimal: 348       &lt;br /&gt;&amp;#160; Octal:&amp;#160;&amp;#160; 00000000534       &lt;br /&gt;&amp;#160; Binary:&amp;#160; 00000000 00000000 00000001 01011100       &lt;br /&gt;&amp;#160; Chars:&amp;#160;&amp;#160; ...\       &lt;br /&gt;&amp;#160; Time:&amp;#160;&amp;#160;&amp;#160; Thu Jan 01 01:05:48 1970       &lt;br /&gt;&amp;#160; Float:&amp;#160;&amp;#160; low 4.87652e-043 high 0       &lt;br /&gt;&amp;#160; Double:&amp;#160; 1.71935e-321&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;&lt;strong&gt;A veces hay que ayudar a Windbg para que muestre una buena traza de pila&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;En determinados ambientes de servidores es bastante común que tengamos que depurar un sistema que haya recibido una carga de trabajo bastante elevada. Una consecuencia de esto es que la información correspondiente a la pila no reside en memoria principal. Técnicamente, se dice que las páginas correspondientes a la pila han paginado a disco. Otro escenario común es que estemos depurando un software cuya ejecución haya corrompido la pila. Para que Windbg pueda construir una buena traza de pila, es necesario que ciertas estructuras de la misma estén en estado intacto. De no ser así, con total seguridad no podemos confiar en la traza de pila resultante que obtengamos mediante la familia de comandos k*. Un ejemplo de traza de pila sospechosa sería aquella en la que el marco de pila actual (es decir, el que está el primero en la traza) se le haya hecho corresponder con una dirección de memoria hexadecimal en lugar de el símbolo de una función. ¿Por qué motivo Windbg no ha podido hacer corresponder esa dirección de memoria con un módulo? Posiblemente porque con anterioridad se haya sobreescrito partes importantes de la pila (como la dirección de retorno) y el flujo de ejecución haya acabado ahí por error. Es más que probable que la dirección ni siquiera sea código ejecutable, con la correspondiente excepción que surgirá cuando el procesador se disponga a ejecutar a partir de ella.&lt;/p&gt;  &lt;p&gt;En estos casos de la vida real, no nos queda otra opción que ayudar a Windbg aplicando nuestros conocimientos para reconstruir una buena traza de pila. Lo primero es hacer uso del comando dd (&lt;em&gt;display memory, double-word&lt;/em&gt;) para mostrar el contenido de la pila (almacenado en la dirección de memoria contenida en el registro puntero de pila, esp):&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;dd esp&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;De la salida de este comando hay que identificar aquellas direcciones que se correspondan con funciones. Para ver los rangos de direcciones de los símbolos de todos los módulos cargados en memoria, podemos hacer uso del comando&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;x *!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Buscamos en la salida del comando dd esp aquellas direcciones que podrían corresponderse con direcciones de funciones. Para ello comparamos cada dirección con los rangos de direcciones que nos muestra el comando x *!. Una vez que hayamos identificado alguna dirección de memoria que sea potencialmente candidata de ckrrresponderse con una función, podemos comprobar si estamos en lo cierto haciendo uso del comando&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ln &lt;em&gt;&amp;lt;Dirección&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El comando ln (&lt;em&gt;list nearest symbols&lt;/em&gt;) nos muestra los símbolos más cercanos a la dirección de memoria pasada como argumento.&lt;/p&gt;  &lt;p&gt;Una vez identificadas las posibles funciones que conformarían nuestra traza de pila reconstruida, debemos tener en cuenta las direcciones de retorno que se almacenan en la pila previamente a una llamada a subrutina (como vimos en el artículo anterior). Desensamblando unas cuantas instrucciones alrededor de esa dirección de retorno mediante el comando &lt;strong&gt;u&lt;/strong&gt; podemos confirmar nuestra teoría viendo si hay una llamada a subrutina (&lt;em&gt;call&lt;/em&gt;, en ensamblador) y en cuyo caso, a qué dirección de función está llamando. Si nuestras averiguaciones han sido correctas, dicha llamada debería ser a la función que esté justo encima en nuestra hipotética traza de pila. Una vez identificado el flujo de ejecución de la aplicación, podemos dar visto bueno a nuestra traza de pila y proseguir con la depuración.&lt;/p&gt;  &lt;p&gt;En el próximo artículo vamos a ver un ejemplo práctico donde reconstruyo una traza de pila para poner en práctica y afianzar totalmente los pasos anteriormente comentados. Seguiremos tratando el tema de la pila de ejecución con otros casos del mundo real con los que me he encontrado en los que ha sido necesario comprobar que una traza de pila es correcta para seguidamente analizarla y determinar por qué ha ocurrido cierto problema.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1780106" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windbg/default.aspx">Windbg</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Debugging/default.aspx">Debugging</category></item><item><title>¿Se pueden deshabilitar las vistas en miniatura de la barra de tareas en Windows 7?</title><link>http://msmvps.com/blogs/dmartin/archive/2010/10/05/191-se-pueden-deshabilitar-las-vistas-en-miniatura-de-la-barra-de-tareas-en-windows-7.aspx</link><pubDate>Tue, 05 Oct 2010 22:39:55 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1779406</guid><dc:creator>dmartin</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1779406</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1779406</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/10/05/191-se-pueden-deshabilitar-las-vistas-en-miniatura-de-la-barra-de-tareas-en-windows-7.aspx#comments</comments><description>&lt;p&gt;Uno de los temas que más se han comentado en Internet con respecto a Windows 7 es si en este sistema es posible deshabilitar las vistas en miniatura que aparecen al posar el puntero del ratón sobre un icono de aplicación abierta de la barra de tareas. En algunas páginas en Internet se muestran algunos pasos, y algunos usuarios comentan que funcionan, otros que no, etc. Este artículo aclarará qué es lo que realmente sirve aproximadamente, qué no sirve, y todo lo que se puede hacer con las vistas en miniatura de la barra de tareas en Windows 7.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TaskbarNoThumbnail: Una directiva que se aplicaba a Windows Vista pero que ya no sirve en Windows 7&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si busca en Internet sobre cómo desactivar las vistas en miniatura de la barra de tareas en Windows 7, es probable que se encuentre con artículos que indican cómo aplicar una directiva de grupo que aparentemente consigue esto mismo. En concreto se trata del valor de tipo DWORD “TaskbarNoThumbnail” que se puede agregar a la clave de registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer. Lamentablemente esta directiva solo es aplicable a Windows Vista. De hecho, en Windows Vista se pueden activar/desactivar las vistas en miniatura desde las propiedades de la barra de tareas. En Windows 7 se ha eliminado completamente esta opción de la interfaz de usuario. Por lo tanto, esta alternativa no consigue lo que queremos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DisablePreviewWindow: Cómo desactivar Live Preview. Pero Live Preview &lt;em&gt;no es&lt;/em&gt; la vista en miniatura de la barra de tareas&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Otras páginas tratan una cuestión parecida e invitan al usuario a crear un valor de registro de nombre DisablePreviewWindow con contenido 1 en la clave de registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced. Este valor de registro desactiva lo que se conoce como Live Preview, que no es exactamente lo que está buscando. Live Preview es el efecto que surge cuando el usuario posa el cursor del ratón sobre una miniatura de la barra de tareas: La ventana en cuestión aparece visible y “aislada” del resto, para echar un vistazo rápido. Similarmente, el valor de registro DisablePreviewDesktop, de esa misma clave de registro, desactiva Aero Peek.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;ExtendedUIHoverTime: Una forma de desactivarlas “aproximadamente”&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Si añade a la clave de registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced un valor de tipo DWORD y nombre ExtendedUIHoverTime que contenga el tiempo (en milisegundos) que quiere que pase hasta que se muestre la vista en miniatura, efectivamente si establece un valor alto conseguirá el efecto de que la vista no se muestre nada más posar el puntero sobre un elemento de la barra de tareas. El problema es que mucha gente quiere que al posar el puntero sobre un elemento de la barra de tareas se muestre una lista clásica de todas las ventanas que hay abiertas de ese elemento. Para ello una opción es activar un tema clásico de Windows, o desactivar la composición de escritorio (con la consecuente pérdida de efectos visuales), o bien manipular un valor del registro, comentado a continuación.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NumThumbnails: Probablemente &lt;em&gt;casi&lt;/em&gt; lo que está buscando&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si añade a la clave de registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband un valor de tipo DWORD y nombre NumThumbnails, podrá controlar el número de vistas en miniatura máximo para que el sistema pase a mostrar una lista vertical de ventanas. Por defecto Windows muestra hasta un máximo de 16 vistas en miniatura en la barra de tareas. Los límites superior e inferior para el valor NumThumbnails es 32 y 1. Como ve, el límite inferior es 1, por lo que las ventanas individuales siempre mostrarán una vista en miniatura.&lt;/p&gt;  &lt;p&gt;Por último, una aplicación denominada Taskbar Tweaker (&lt;a title="http://rammichael.com/7-taskbar-tweaker" href="http://rammichael.com/7-taskbar-tweaker"&gt;http://rammichael.com/7-taskbar-tweaker&lt;/a&gt;) es capaz de eliminar las vistas en miniatura de la barra de tareas, sin modificar el registro (es una aplicación que se inyecta en Explorer.exe). La pega de esta opción es que tampoco es capaz de mostrar una lista de ventanas en lugar de la lista de vistas en miniatura.&lt;/p&gt;  &lt;p&gt;Como observa, no hay una opción de registro perfecta que consiga pasar a modo lista la visualización de ventanas abiertas en la barra de tareas de Windows 7, sin tener que desactivar Windows Aero. Lo más cercano quizá sea la opción cuarta (&lt;em&gt;NumThumbnails&lt;/em&gt;) estableciendo como contenido para este valor de registro un 1.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1779406" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Shell/default.aspx">Shell</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Consultas/default.aspx">Consultas</category><category domain="http://msmvps.com/blogs/dmartin/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>¿Qué versión de .NET Framework instalar?</title><link>http://msmvps.com/blogs/dmartin/archive/2010/09/15/191-qu-233-versi-243-n-de-net-framework-instalar.aspx</link><pubDate>Wed, 15 Sep 2010 18:24:50 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1778074</guid><dc:creator>dmartin</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/rsscomments.aspx?PostID=1778074</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/dmartin/commentapi.aspx?PostID=1778074</wfw:comment><comments>http://msmvps.com/blogs/dmartin/archive/2010/09/15/191-qu-233-versi-243-n-de-net-framework-instalar.aspx#comments</comments><description>&lt;p&gt;Existen bastantes dudas entre la gente que no se dedica a programar (en especial en .NET)sobre las versiones de .NET Framework. Desde el punto de vista de un usuario final o de un profesional de las TI que no desarrolla software, ¿qué versiones instalar y cuáles no? ¿Se actualizan las versiones anteriores o se instalan de forma paralela? Este artículo dará respuesta a estas preguntas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿De qué se compone .NET?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;El punto de partida para aclarar el caos que existe con las versiones de .NET es comprender exactamente cuáles son los dos componentes principales de .NET: Por un lado está el CLR (&lt;em&gt;Common Language Runtime&lt;/em&gt;) y por otro el Framework, o conjunto de librerías que proporcionan funcionalidades a los programadores de aplicaciones. Existe un tercer componente, el lenguaje de programación (C# o VB.NET), que no vamos a tratar en este artículo.&lt;/p&gt;  &lt;p&gt;El núcleo de .NET Framework es el CLR, y es el componente que se encarga entre otras cosas de traducir el código gestionado (IL), generado por el compilador, en código adaptado a la máquina de destino (por ejemplo, x86). La clave está en el número de versión del CLR &lt;em&gt;es independiente de la versión de .NET Framework&lt;/em&gt;; o dicho de otra manera, una nueva versión de .NET Framework &lt;em&gt;no necesariamente incorpora una nueva versión del CLR&lt;/em&gt;. Este punto es el que confunde a mucha gente. Históricamente, las versiones de .NET (sin contar Service Packs intermedios) han sido la 1.0, 1.1, 2.0, 3.0, 3.5 y 4.0, disponible desde hace poco tiempo. Hasta la versión 2.0, cada nueva versión de .NET Framework ha incorporado una nueva versión del CLR. Sin embargo, las versiones 3.0 y 3.5 siguen usando la versión 2.0 del CLR. Estas dos versiones solo han consistido en la adición de nuevas librerías, manteniéndose el mismo núcleo de .NET. ¿Por qué ha elegido Microsoft denominarlas con un nuevo número de versión? Realmente lo desconozco, quizá sea un aspecto de marketing.&lt;/p&gt;  &lt;p&gt;.NET Framework en su versión 4.0 introdujo la versión 4.0 de las librerías y además incorporó una nueva versión del CLR, la 4.0. Esta tabla resume toda esta información:&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="576"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Versión del CLR&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="152"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Versión de .NET&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="289"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Incorporado de serie en&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;1.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="152"&gt;         &lt;p align="center"&gt;1.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="289"&gt;         &lt;p align="center"&gt;Ningún sistema&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;1.1&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="152"&gt;         &lt;p align="center"&gt;1.1&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="289"&gt;         &lt;p align="center"&gt;Ningún sistema&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;2.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="152"&gt;         &lt;p align="center"&gt;2.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="289"&gt;         &lt;p align="center"&gt;Windows Vista y Windows Server 2008*&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;2.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="152"&gt;         &lt;p align="center"&gt;3.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="289"&gt;         &lt;p align="center"&gt;Windows Vista y Windows Server 2008&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;2.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="152"&gt;         &lt;p align="center"&gt;3.5&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="289"&gt;         &lt;p align="center"&gt;Windows 7 y Windows Server 2008 R2**&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;         &lt;p align="center"&gt;4.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="152"&gt;         &lt;p align="center"&gt;4.0&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="289"&gt;         &lt;p align="center"&gt;Ningún sistema&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;* Incorpora la versión 2.0 SP2 como requisito de la versión 3.0.&lt;/p&gt;  &lt;p&gt;** Incorpora la versión 3.5 SP1. &lt;/p&gt;  &lt;p&gt;(No ha habido una versión 3.0 del CLR).&lt;/p&gt;  &lt;p&gt;Las versiones instaladas de .NET están en el directorio C:\Windows\Microsoft.NET\Framework, dentro de la subcarpeta correspondiente a su número de versión. Podrá comprobar que algunas versiones, como la 3.0 o 3.5, no incorporan una nueva versión del fichero Mscorlib.dll, que implementa el núcleo de .NET.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;¿Se pueden instalar varias versiones en un mismo equipo? ¿Se actualizan automáticamente las versiones anteriores?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Podemos tener instaladas varias versiones de .NET Framework. La versión 3.0, por ejemplo, requiere tener instalada la versión 2.0 para añadirle unas cuantas librerías más. Lo mismo ocurre con la versión 3.5. No es necesario instalarlas gradualmente, cada instalación incorpora todos los componentes necesarios. Por lo general, si un programa requiere una versión específica de .NET, la instalará automáticamente, o bien le indicará al usuario de dónde tiene que bajarla e instalarla. No hay ningún problema por tener instaladas varias versiones de .NET en un mismo equipo, estas se ejecutan “side-by-side”, impidiendo que ocurran conflictos. La práctica totalidad de aplicaciones diseñadas para .NET Framework 1.0, 1.1, 2.0, 3.0 ó 3.5 van a funcionar sin problemas en .NET Framework 4.0.&lt;/p&gt;  &lt;p&gt;Este es un resumen del “caos” de versiones de .NET Framework, que trae de cabeza a muchos usuarios finales que no saben exáctamente qué versión instalar. Si el sistema operativo es superior a Windows XP, el usuario probablemente no va a tener que preocuparse de instalar nada, pues estos sistemas ya incorporan de serie una versión de .NET Framework. En estos casos, lo único que hay que hacer es mantenerla actualizada. En el caso de que aparezca una nueva versión del motor CLR de .NET, al instalarla se mantendrán las versiones anteriores que pudiera haber en el equipo; no es necesario desinstalarlas. En casos como las versiones 3.0 y 3.5 esto incluso no es posible hacerlo puesto que dependen del motor de la versión 2.0 para funcionar. Otro caso en el que no es posible la desinstalación es si la versión de .NET venía incorporada de serie con el sistema operativo (tercera columna de la tabla anterior).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1778074" 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/.NET/default.aspx">.NET</category></item></channel></rss>
