<?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>Search results for 'app:weblogs' matching tag 'Consultas'</title><link>http://msmvps.com/search/SearchResults.aspx?q=app:weblogs&amp;tag=Consultas&amp;orTags=0&amp;o=DateDescending</link><description>Search results for 'app:weblogs' matching tag 'Consultas'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>&amp;#191;En qu&amp;#233; consiste una versi&amp;#243;n localizada de Windows Vista/7? [Parte I]</title><link>http://msmvps.com/blogs/dmartin/archive/2009/10/24/191-en-qu-233-consiste-una-versi-243-n-localizada-de-windows-vista-7.aspx</link><pubDate>Sat, 24 Oct 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1734902</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Una pr&amp;aacute;ctica que era com&amp;uacute;n en el desarrollo de&amp;nbsp;software de hace unos a&amp;ntilde;os&amp;nbsp;consist&amp;iacute;a en&amp;nbsp;mezclar el&amp;nbsp;c&amp;oacute;digo fuente de la aplicaci&amp;oacute;n&amp;nbsp;junto con&amp;nbsp;cadenas de texto y otros recursos (iconos, im&amp;aacute;genes, etc.). El siguiente diagrama&amp;nbsp;lo explica gr&amp;aacute;ficamente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0456.TextoEnCodigo.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0456.TextoEnCodigo.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Conforme el mercado comenz&amp;oacute; a globalizarse fue surgiendo la necesidad de traducir aplicaciones a m&amp;uacute;ltiples idiomas, y por ende este m&amp;eacute;todo acab&amp;oacute; siendo completamente descartado por los siguientes motivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Para traducir una aplicaci&amp;oacute;n primero hay que crear una o m&amp;aacute;s copias de su&amp;nbsp;c&amp;oacute;digo fuente, con el consecuente coste a&amp;ntilde;adido que supone el mantenerlas.&lt;/li&gt;
&lt;li&gt;Los traductores, que por lo general no tienen conocimientos de programaci&amp;oacute;n, tienen que manipular el c&amp;oacute;digo fuente para traducir las cadenas de texto. Esto puede introducir errores en el funcionamiento de la aplicaci&amp;oacute;n.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es en esta &amp;eacute;poca cuando el uso de una versi&amp;oacute;n en ingl&amp;eacute;s (o en el idioma nativo de la empresa que desarrollara ese programa) s&amp;iacute; pod&amp;iacute;a ofrecer ciertas ventajas con respecto al resto de idiomas. La posibilidad de introducir errores en el c&amp;oacute;digo mientras se traduc&amp;iacute;a&amp;nbsp;un programa&amp;nbsp;no era algo descabellado, todo ello debido a que la separaci&amp;oacute;n entre c&amp;oacute;digo fuente y cadenas de texto dependientes del idioma era insuficiente (en este caso particular, inexistente).&lt;/p&gt;
&lt;p&gt;Las versiones de Windows anteriores a Vista introdujeron una nueva arquitectura de localizaci&amp;oacute;n de binarios, con el objetivo de separar el c&amp;oacute;digo fuente (las instrucciones que acaba ejecutando el computador) de las cadenas de texto (mensajes informativos, errores, iconos, etc.). &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0871.CodigoSeparado.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0871.CodigoSeparado.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si bien esta arquitectura es v&amp;aacute;lida y sigue siendo usada por much&amp;iacute;simas aplicaciones hoy en d&amp;iacute;a, presenta algunas deficiencias que se magnifican en una empresa del tama&amp;ntilde;o de Microsoft: Por ejemplo, si se detecta un fallo de seguridad en un binario y se quiere desarrollar una actualizaci&amp;oacute;n de seguridad al respecto, como el c&amp;oacute;digo fuente y las&amp;nbsp;cadenas de texto est&amp;aacute;n en el mismo fichero (pese a estar separados entre s&amp;iacute;),&amp;nbsp;ser&amp;iacute;a necesario generar un par de decenas o m&amp;aacute;s de actualizaciones de seguridad, una para cada idioma en el que est&amp;aacute; disponible Windows. Esto retarda innecesariamente el desarrollo de actualizaciones de seguridad en varios idiomas, pues por lo general los errores de seguridad afectan &amp;uacute;nicamente&amp;nbsp;al c&amp;oacute;digo de la aplicaci&amp;oacute;n, no a las cadenas de texto y otros recursos que pudiera contener.&lt;/p&gt;
&lt;p&gt;Con Windows Vista se redise&amp;ntilde;&amp;oacute; en profundidad la arquitectura MUI (&lt;em&gt;Multilingual User Interface&lt;/em&gt;) que ya estaba presente en la versi&amp;oacute;n Professional de Windows XP (entre otros) para que las cadenas de texto y el c&amp;oacute;digo de las aplicaciones estuviera completamente separado, esto es, en ficheros diferentes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0028.BinariosSeparados.png"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0028.BinariosSeparados.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta arquitectura MUI introducida con Windows Vista no solo beneficia a Microsoft y al usuario, que ya puede instalar un paquete de idiomas en una versi&amp;oacute;n de Windows&amp;nbsp;que no est&amp;eacute; en ingl&amp;eacute;s, tambi&amp;eacute;n beneficia a los desarrolladores de aplicaciones, pues por f&amp;iacute;n disponen de una arquitectura proporcionada por el sistema operativo para manejar recursos en m&amp;uacute;ltiples idiomas, sin ser ya necesario que se construyan una desde cero.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Qu&amp;eacute; ocurre al instalar Windows Vista/7?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En un &lt;a target="_blank" href="http://rinconwindows.blogspot.com/2007/04/detalles-sobre-la-instalacin-de-windows.html"&gt;art&amp;iacute;culo&lt;/a&gt; de mi antiguo &lt;em&gt;blog&lt;/em&gt; tengo un art&amp;iacute;culo que explica resumidamente en qu&amp;eacute; consisten las fases de la instalaci&amp;oacute;n de Windows Vista. B&amp;aacute;sicamente lo que ocurre es que en primer lugar se instalan los binarios del sistema (independientes del idioma), y seguidamente se instala uno o varios paquetes de idiomas. Como ve, el ingl&amp;eacute;s no recibe ning&amp;uacute;n tipo de trato preferencial, se le trata como un idioma m&amp;aacute;s. La fase correspondiente a la instalaci&amp;oacute;n del paquete de idiomas inicial se realiza durante la fase&amp;nbsp;&amp;quot;Instalando caracter&amp;iacute;sticas&amp;quot;.&lt;/p&gt;
&lt;p&gt;En Windows Vista la herramienta encargada de instalar un paquete de idiomas es la denominada Package Manager (Pkgmgr.exe). En Windows 7, se usa la herramienta Dism (&lt;em&gt;Deployment Image Servicing and Imaging&lt;/em&gt;), que integra&amp;nbsp;todas las&amp;nbsp;funcionalidades de Package Manager y de otras&amp;nbsp;herramientas igualmente relacionadas con la administraci&amp;oacute;n de im&amp;aacute;genes de instalaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;En este primer art&amp;iacute;culo se ha explicado&amp;nbsp;c&amp;oacute;mo ha ido evolucionando&amp;nbsp;la localizaci&amp;oacute;n del software a lo largo del&amp;nbsp;tiempo y se ha aclarado que en Windows Vista&amp;nbsp;y Windows 7 los binarios est&amp;aacute;n completamente separados&amp;nbsp;de las cadenas de texto, con las ventajas que esto conlleva. Esto implica tambi&amp;eacute;n que Vista/7 sean sistemas idependientes del idioma en el que se utilicen; el ingl&amp;eacute;s es un idioma como otro cualquiera.&lt;/p&gt;
&lt;p&gt;En un siguiente art&amp;iacute;culo se explicar&amp;aacute; en detalle en qu&amp;eacute; consiste exactamente un paquete de idiomas&amp;nbsp;y qu&amp;eacute; es lo que conforma la infraestructura MUI de Windows Vista/7. Se explicar&amp;aacute; tambi&amp;eacute;n c&amp;oacute;mo el sistema obtiene los recursos en el idioma establecido por el usuario. Este aspecto puede ser importante para la gente que le interese saber c&amp;oacute;mo solucionar problemas con Windows, pues me he encontrado con&amp;nbsp;alg&amp;uacute;n que otro sistema cuyo s&amp;iacute;ntoma es que una determinada aplicaci&amp;oacute;n no muestra ning&amp;uacute;n tipo de interfaz gr&amp;aacute;fica (es decir, no se abre)&amp;nbsp;y cuya causa es una configuraci&amp;oacute;n incorrecta de los recursos MUI de ese sistema.&lt;/p&gt;</description></item><item><title>Sobre el error &amp;quot;La operaci&amp;#243;n solicitada requiere elevaci&amp;#243;n&amp;quot; que puede devolver Runas.exe en Windows Vista/7</title><link>http://msmvps.com/blogs/dmartin/archive/2009/10/03/sobre-runas-exe-en-windows-7.aspx</link><pubDate>Sat, 03 Oct 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1724594</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;En un foro que frecuento un usuario ten&amp;iacute;a el siguiente problema: Al intentar ejecutar como administrador un programa en Windows 7 usando el comando Runas.exe, le aparec&amp;iacute;a el siguiente mensaje de error:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;740: La operaci&amp;oacute;n solicitada requiere elevaci&amp;oacute;n.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ciertamente el usuario estaba proporcionando el nombre de usuario y la contrase&amp;ntilde;a de un usuario con privilegios administrativos as&amp;iacute; que... &amp;iquest;d&amp;oacute;nde estar&amp;iacute;a el problema?&lt;/p&gt;
&lt;p&gt;En primer lugar, vamos a analizar con calma lo que quiere decir el mensaje de error. El mensaje de error &amp;quot;La operaci&amp;oacute;n solicitada requiere elevaci&amp;oacute;n&amp;quot; est&amp;aacute; recogido en el fichero de cabecera Ntstatus.h del SDK de Windows Vista y posteriores. Concretamente est&amp;aacute; definido con el nombre de macro ERROR_ELEVATION_REQUIRED.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Cu&amp;aacute;ndo se devuelve ese c&amp;oacute;digo de error durante el funcionamiento de Windows?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En Windows los procesos se crean usando la API CreateProcess. Uno de los pasos que se siguen antes de crear un proceso en Windows Vista y posteriores es comprobar si el proceso en cuesti&amp;oacute;n necesita elevar sus privilegios o no. A la hora de determinar este aspecto, entran en juego, entre otros,&amp;nbsp;dos par&amp;aacute;metros: El nivel de ejecuci&amp;oacute;n (&lt;em&gt;runlevel&lt;/em&gt;) impuesto por el manifiesto de la propia aplicaci&amp;oacute;n, y el token del usuario que est&amp;aacute; lanzando ese programa. Existen tres posibles niveles de ejecuci&amp;oacute;n para una aplicaci&amp;oacute;n:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;asInvoker&lt;/em&gt;: El nivel de ejecuci&amp;oacute;n es el mismo que el del proceso padre.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;highestAvailable&lt;/em&gt;: El nivel de ejecuci&amp;oacute;n es el de mayores privilegios posibles, considerando el tipo de cuenta desde la&amp;nbsp;cual&amp;nbsp;se ejecuta el proceso.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;requireAdministrator&lt;/em&gt;: El nivel de ejecuci&amp;oacute;n es administrativo, independientemente de las dem&amp;aacute;s circunstancias.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta tabla recoge de forma b&amp;aacute;sica las posibilidades:&lt;/p&gt;
&lt;table style="width:100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="width:239px;"&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Nivel de ejecuci&amp;oacute;n de la aplicaci&amp;oacute;n&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;&lt;em&gt;Token&lt;/em&gt; del usuario&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Requiere elevaci&amp;oacute;n o no&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:239px;"&gt;AsInvoker&lt;/td&gt;
&lt;td&gt;Cualquiera&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:239px;"&gt;highestAvailable&lt;/td&gt;
&lt;td&gt;Administrador &amp;quot;elevado&amp;quot;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:239px;"&gt;highestAvailable&lt;/td&gt;
&lt;td&gt;Administrador &amp;quot;est&amp;aacute;ndar&amp;quot;&lt;/td&gt;
&lt;td&gt;S&amp;iacute;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:239px;"&gt;highestAvailable&lt;/td&gt;
&lt;td&gt;Otro caso&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:239px;"&gt;requireAdministrator&lt;/td&gt;
&lt;td&gt;Administrador &amp;quot;elevado&amp;quot;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:239px;"&gt;requireAdministrator&lt;/td&gt;
&lt;td&gt;Otro caso&lt;/td&gt;
&lt;td&gt;S&amp;iacute;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Por administrador &amp;quot;elevado&amp;quot; me refiero a aquella cuenta con privilegios administrativos pero que, o bien ya ha elevado expl&amp;iacute;citamente sus privilegios (a trav&amp;eacute;s de un cuadro de UAC), o bien no tiene activada la caracter&amp;iacute;stica Modo de aprobaci&amp;oacute;n del administrador (&lt;em&gt;Admin Approval Mode&lt;/em&gt;). Esta caracter&amp;iacute;stica se puede desactivar desde Directiva de grupo, pero yo personalmente lo desaconsejo.&amp;nbsp;Un ejemplo de este tipo de cuentas es la cuenta &amp;quot;Administrador&amp;quot;, creada durante la instalaci&amp;oacute;n del sistema operativo. Recuerde que el resto de cuentas con privilegios administrativos poseen dos &lt;em&gt;tokens&lt;/em&gt;: uno limitado, con el que &amp;quot;act&amp;uacute;an&amp;quot; por defecto, y otro &amp;quot;administrativo&amp;quot;, que pueden aplicar si el usuario as&amp;iacute; lo indica a trav&amp;eacute;s de un cuadro de UAC.&lt;/p&gt;
&lt;p&gt;Una vez que CreateProcess falla (devuelve un valor distinto de 1) y el &amp;uacute;ltimo error se establece como ERROR_ELEVATION_REQUIRED (columna &amp;quot;Requiere elevaci&amp;oacute;n&amp;nbsp;o no&amp;quot; de la tabla anterior), es asunto del proceso padre el tratar convenientemente este error. Si no lo hace, se registrar&amp;aacute; en Visor de sucesos, apartado dedicado a UAC, un evento informando de que el proceso padre no trat&amp;oacute; apropiadamente el error&amp;nbsp;&lt;span lang="EN"&gt;ERROR_ELEVATION_REQUIRED.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&lt;strong&gt;&amp;iquest;Qu&amp;eacute; ocurre cuando se lanza una aplicaci&amp;oacute;n desde la l&amp;iacute;nea de comandos?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;Imaginemos que el usuario intenta ejecutar el desfragmentador de disco de Windows 7 usando para ello una sintaxis de Runas.exe como esta:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&lt;strong&gt;runas /u:UsuarioAdministrador dfrgui.exe&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&lt;/span&gt;&lt;span lang="EN"&gt;B&amp;aacute;sicamente la l&amp;iacute;nea de comandos detecta que no se trata de un comando interno, sino que se trata del programa Runas.exe, y por tanto&amp;nbsp;se dispone a ejecutarlo usando CreateProcess. Como Runas.exe no es un programa que est&amp;aacute; marcado para requerir elevaci&amp;oacute;n de privilegios, CreateProcess retorna &amp;eacute;xito.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;Una vez que el planificador del sistema operativo&amp;nbsp;cede el control al proceso Runas.exe reci&amp;eacute;n creado, este se dispone a analizar su l&amp;iacute;nea de comandos. Se encuentra con una petici&amp;oacute;n de ejecutar Dfrgui.exe como si fuera el usuario administrador pasado como par&amp;aacute;metro. Sin embargo, Runas.exe&amp;nbsp;es poco&amp;nbsp;m&amp;aacute;s que un &amp;quot;envoltorio&amp;quot; de la API &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms682431(VS.85).aspx"&gt;CreateProcessWithLogonW&lt;/a&gt;, que a su vez es poco m&amp;aacute;s que un envoltorio de la API CreateProcess, pero pasando otro perfil de usuario distinto como par&amp;aacute;metro.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;Durante su ejecuci&amp;oacute;n, CreateProcess determina que Dfrgui.exe requiere privilegios administrativos (puesto que as&amp;iacute; se lo indica su manifiesto), y por ello devuelve falso y establace el &amp;uacute;ltimo error como ERROR_ELEVATION_REQUIRED. Como Runas.exe es una herramienta que no est&amp;aacute; dise&amp;ntilde;ada para tratar apropiadamente ese error, simplemente lo devuelve por pantalla de la forma &amp;quot;740: La operaci&amp;oacute;n solicitada requiere elevaci&amp;oacute;n&amp;quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;Una vez desvelado el misterio, resta por comentar un aspecto que a estas alturas quiz&amp;aacute; ya se haya planteado:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&lt;strong&gt;&amp;iquest;C&amp;oacute;mo es posible que ejecutando Dfrgui.exe desde la l&amp;iacute;nea de comandos -sin usar Runas.exe- s&amp;iacute; que aparezca un cuadro de UAC?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;El secreto est&amp;aacute; en que la l&amp;iacute;nea de comandos, antes de llamar a CreateProcess, informa al sistema de que va a tratar los posibles ERROR_ELEVATION_REQUIRED que puedan surgir. Esto lo consigue estableciendo unos atributos no documentados a la estructura &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms686329(VS.85).aspx"&gt;STARTUPINFOEX&lt;/a&gt;, que se pasa como par&amp;aacute;metro a la familia de API CreateProcess. Esto hace que no se registre el correspondiente error en el apartado UAC del Visor de sucesos. Seguidamente, la l&amp;iacute;nea de comandos, sabiendo que se trata de un programa que debe elevar sus privilegios, lo intenta ejecutar mediante la API &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/bb762154(VS.85).aspx"&gt;ShellExecuteEx&lt;/a&gt;. &lt;strong&gt;Esta API s&amp;iacute; muestra el correspondiente cuadro de UAC, as&amp;iacute; que es la v&amp;iacute;a apropiada para ejecutar una aplicaci&amp;oacute;n que requiera privilegios administrativos.&lt;/strong&gt;&lt;/span&gt;
&lt;p&gt;En resumen, me gustar&amp;iacute;a resaltar estos puntos&amp;nbsp;del tema del art&amp;iacute;culo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En Windows Vista y Windows 7 la &amp;uacute;nica forma de ejecutar algo con privilegios administrativos es mediante un cuadro de UAC. No vale con poner el nombre de usuario y la contrase&amp;ntilde;a de un administrador en la l&amp;iacute;nea de comandos.&lt;/li&gt;
&lt;li&gt;Todo lo que se ejecute mediante la API CreateProcess, o alguna derivada de ella,&amp;nbsp;&lt;strong&gt;no har&amp;aacute; que aparezca un cuadro de UAC&lt;/strong&gt;. Un ejemplo de ello es la utilidad Runas.exe.&lt;/li&gt;
&lt;li&gt;Runas.exe, en Windows Vista/7, sirve para ejecutar una aplicaci&amp;oacute;n como si fuera otro usuario, &lt;strong&gt;pero no sirve para ejecutarla con mayores privilegios.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Si quiere que se ejecute una aplicaci&amp;oacute;n que requiere privilegios administrativos, &lt;strong&gt;use la API ShellExecuteEx&lt;/strong&gt;, o alguna de sus derivadas. Esta API s&amp;iacute; permite la aparici&amp;oacute;n de un cuadro de UAC para que el usuario eleve sus privilegios.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description></item><item><title>&amp;#191;Cu&amp;#225;ndo crea Windows un punto de restauraci&amp;#243;n autom&amp;#225;tico?</title><link>http://msmvps.com/blogs/dmartin/archive/2009/09/17/191-cu-225-ndo-crea-Windows-un-punto-de-restauraci-243-n-autom-225-tico.aspx</link><pubDate>Thu, 17 Sep 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1723151</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Una de las dudas que m&amp;aacute;s surgen entre los usuarios de Restaurar sistema es cada cu&amp;aacute;nto tiempo se crear&amp;aacute; un punto de restauraci&amp;oacute;n autom&amp;aacute;tico. Este art&amp;iacute;culo pretende dar una respuesta precisa a esta cuesti&amp;oacute;n para as&amp;iacute; esclarecer aquellos casos en los que el sistema no haya creado un punto de restauraci&amp;oacute;n desde hace tiempo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows XP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En Windows XP cada hora una tarea interna del Programador de tareas se encarga de analizar si el sistema est&amp;aacute; inactivo, es decir, si no est&amp;aacute; haciendo uso de la CPU ni del subsistema de E/S. Si se diera el caso, se realizan dos posibles comprobaciones para determinar si se debe crear un punto de restauraci&amp;oacute;n autom&amp;aacute;tico:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si han pasado m&amp;aacute;s de 24 horas desde el &amp;uacute;ltimo punto de restauraci&amp;oacute;n, se crea uno autom&amp;aacute;ticamente. Este par&amp;aacute;metro (24 horas) es editable desde el Registro del sistema operativo, concretamente en la clave HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\SystemRestore, valor &lt;em&gt;RPGlobalInterval&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Si la sesi&amp;oacute;n actual de trabajo con el PC&amp;nbsp;est&amp;aacute; durando m&amp;aacute;s de X horas y el &amp;uacute;ltimo punto de restauraci&amp;oacute;n es m&amp;aacute;s antiguo, se crea un punto de restauraci&amp;oacute;n autom&amp;aacute;tico. Por defecto, esta configuraci&amp;oacute;n &lt;strong&gt;no est&amp;aacute; establecida&lt;/strong&gt;, pero puede hacerlo desde el Registro en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore, valor &lt;em&gt;RPSessionInterval&lt;/em&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La comprobaci&amp;oacute;n de inactividad se realiza por defecto cada hora pero podr&amp;iacute;a variar dependiendo de los valores de ciertas pol&amp;iacute;ticas de energ&amp;iacute;a de su equipo. Eche un vistazo a los valores &lt;strong&gt;IdleTimeoutDc, IdleTimeoutAc&lt;/strong&gt; de esta p&amp;aacute;gina de MSDN:&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa373239(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa373239(VS.85).aspx&lt;/a&gt;. Aprovechando la inactividad, Restaurar sistema realiza otras tareas, tales&amp;nbsp;como eliminar aquellos puntos de restauraci&amp;oacute;n cuyo tiempo de vida ya haya expirado, y de paso comprimir el almac&amp;eacute;n usando compresi&amp;oacute;n NTFS. Estas tareas se realizan solo si el equipo est&amp;aacute; conectado a la corriente el&amp;eacute;ctrica, para evitar que se agote la bater&amp;iacute;a en el caso de port&amp;aacute;tiles.&lt;/p&gt;
&lt;p&gt;Si quiere profundizar en el funcionamiento de la herramienta Restaurar sistema de Windows XP, eche un vistazo a esta serie de art&amp;iacute;culos de mi antiguo &lt;em&gt;blog&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rinconwindows.blogspot.com/2007/02/cmo-funciona-restaurar-sistema-parte-i.html"&gt;http://rinconwindows.blogspot.com/2007/02/cmo-funciona-restaurar-sistema-parte-i.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rinconwindows.blogspot.com/2007/03/cmo-funciona-restaurar-sistema-parte-ii.html"&gt;http://rinconwindows.blogspot.com/2007/03/cmo-funciona-restaurar-sistema-parte-ii.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows Vista/7&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En Windows Vista/7 el nuevo Programador de tareas muestra informaci&amp;oacute;n detallada acerca de la tarea programada que crea un punto de restauraci&amp;oacute;n autom&amp;aacute;tico. Abra Programador de tareas, apartado \Microsoft\Windows\SystemRestore. La tarea &lt;em&gt;SR&lt;/em&gt; tiene como desencadenantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El inicio del sistema.&lt;/li&gt;
&lt;li&gt;Diariamente a las 12 AM.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En esos instantes se ejecutar&amp;aacute; el comando %windir%\system32\rundll32.exe /d srrstr.dll,ExecuteScheduledSPPCreation.&lt;/p&gt;
&lt;p&gt;El modificador /d de Rundll32.exe ya lo trat&amp;eacute;&amp;nbsp;ligeramente &lt;a target="_blank" href="http://rinconwindows.blogspot.com/2007/10/sobre-el-mensaje-de-error-ha-ocurrido.html"&gt;en mi antiguo &lt;em&gt;blog&lt;/em&gt;&lt;/a&gt;: Se trata de un modificador que le dice a Rundll32.exe &amp;quot;ejecuta este comando y no captures las posibles excepciones que ocurran&amp;quot;. La funci&amp;oacute;n &lt;em&gt;ExecuteScheduledSPPCreation&lt;/em&gt; es la encargada de verificar si el punto de restauraci&amp;oacute;n m&amp;aacute;s antiguo tiene m&amp;aacute;s de 12 horas (la mitad que en el caso de XP) y, si as&amp;iacute; fuese, crear&amp;aacute; uno nuevo.&lt;/p&gt;
&lt;p&gt;Hay que tener en cuenta otras condiciones adicionales que puede observar en la pesta&amp;ntilde;a &lt;em&gt;Condiciones&lt;/em&gt;: El sistema debe estar inactivo durante al menos 10 minutos y adem&amp;aacute;s, en el caso de port&amp;aacute;tiles, debe estar conectado a la red el&amp;eacute;ctrica.&lt;/p&gt;
&lt;p&gt;Espero que este art&amp;iacute;culo haya aclarado sus dudas con respecto a la creaci&amp;oacute;n autom&amp;aacute;tica de puntos de restauraci&amp;oacute;n por parte de Windows. En resumen, si su sistema no genera periodicamente puntos de restauraci&amp;oacute;n puede deberse a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El servicio Programador de tareas no est&amp;aacute; iniciado.&lt;/li&gt;
&lt;li&gt;El sistema no est&amp;aacute; inactivo durante los periodos de tiempo impuestos por Windows, seg&amp;uacute;n lo explicado anteriormente.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Sobre la nueva sintaxis del Panel de control en Windows Vista/Windows 7</title><link>http://msmvps.com/blogs/dmartin/archive/2009/09/11/sobre-la-nueva-sintaxis-del-panel-de-control-en-windows-vista-windows-7.aspx</link><pubDate>Fri, 11 Sep 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1722676</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Quiz&amp;aacute; ya se haya dado cuenta de que en Windows Vista/Windows 7&amp;nbsp;algunos m&amp;oacute;dulos del Panel de control que anteriormente estaban implementados en la cl&amp;aacute;sica forma de un fichero .cpl ahora lo est&amp;aacute;n en la forma de un fichero ejecutable (.exe). El motivo de este cambio es que con la introducci&amp;oacute;n de Control de cuentas de usuario (UAC),&amp;nbsp;se da el caso de que algunos de estos m&amp;oacute;dulos requieren privilegios administrativos para ejecutarse. Ve&amp;aacute;moslo con un ejemplo:&lt;/p&gt;
&lt;p&gt;El ejecutable DPIScaling.exe del&amp;nbsp;directorio \Windows\System32&amp;nbsp;implementa la opci&amp;oacute;n del&amp;nbsp;Panel de control que permite cambiar&amp;nbsp;la&amp;nbsp;escala DPI del sistema. Este m&amp;oacute;dulo requiere privilegios administrativos&amp;nbsp;para ejecutarse, como as&amp;iacute; indica su fichero de manifiesto. Para verlo pr&amp;aacute;cticamente, descargue Strings desde&amp;nbsp;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx"&gt;http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx&lt;/a&gt;&amp;nbsp;y abra una&amp;nbsp;ventana de l&amp;iacute;nea de comandos en el directorio donde la&amp;nbsp;ha extra&amp;iacute;do. Introduzca este comando y pulse INTRO:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;strings %SystemRoot%\System32\DPIScaling.exe&amp;nbsp;| findstr /i requireAdministrator&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La salida del comando, &lt;code&gt;level=&amp;quot;requireAdministrator&amp;quot;&lt;/code&gt;, nos indica que el ejecutable en cuesti&amp;oacute;n requerir&amp;aacute; privilegios administrativos cuando lo invoquemos. Otros posibles valores para el atributo level son:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;asInvoker:&lt;/em&gt; El ejecutable no requerir&amp;aacute; privilegios administrativos.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;highestAvailable:&lt;/em&gt; El ejecutable se ejecutar&amp;aacute; con los m&amp;aacute;ximos privilegios que le permita la cuenta de&amp;nbsp;usuario&amp;nbsp;desde la que ha sido invocado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nombres can&amp;oacute;nicos en Windows Vista/Windows 7&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esta reestructuraci&amp;oacute;n de buena parte de los elementos del Panel de control trajo consigo una de las novedades&amp;nbsp;que se introdujeron en&amp;nbsp;Windows Vista y que se han mantenido en&amp;nbsp;Windows 7: la posibilidad de abrir elementos del Panel de control usando un nombre can&amp;oacute;nico. Un nombre can&amp;oacute;nico es un nombre en ingl&amp;eacute;s, no traducible, que describe de manera cercana al usuario el cometido de ese elemento del Panel de control. Esto evita que el usuario tenga que aprender el nombre de ficheros .cpl, muchas veces cr&amp;iacute;pticos, y adem&amp;aacute;s permite separar el nombre del &amp;iacute;tem de su implementaci&amp;oacute;n, ya sea en un cl&amp;aacute;sico fichero .cpl o, ya sea en un fichero .dll o .exe.&lt;/p&gt;
&lt;p&gt;Por ejemplo, para abrir el panel Agregar o quitar programas de Windows Vista/Windows 7, se puede usar esta sintaxis:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%windir%\system32\control.exe /name Microsoft.ProgramsAndFeatures&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;De d&amp;oacute;nde proviene ese nombre can&amp;oacute;nico, Microsoft.ProgramsAndFeatures?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cuando el ejecutable Control.exe recibe el par&amp;aacute;metro /name seguido de un nombre can&amp;oacute;nico, se invoca a la funci&amp;oacute;n &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/bb775394(VS.85).aspx"&gt;IOpenControlPanel::Open&lt;/a&gt;, la cual&amp;nbsp;en primer lugar busca el elemento correspondiente del Panel de control al que se est&amp;aacute; haciendo referencia. Cabe destacar que el Panel de control es un directorio &lt;strong&gt;virtual&lt;/strong&gt; (no reside f&amp;iacute;sicamente en el disco, sino que est&amp;aacute; implementado por el &lt;em&gt;shell&lt;/em&gt;), situado en la clave de Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace. El valor &lt;em&gt;(Predeterminado)&lt;/em&gt; de cada una de las subclaves de esa rama de Registro contiene el nombre con el que se mostrar&amp;aacute; en Panel de control (no el nombre can&amp;oacute;nico). Para encontrar la implementaci&amp;oacute;n de, digamos, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{0DF44EAA-FF21-4412-828E-260A8728E7F1} (&amp;iacute;tem de las propiedades de la barra de tareas y men&amp;uacute; Inicio), se accede a la clave de registro HKEY_CLASSES_ROOT\CLSID\{0DF44EAA-FF21-4412-828E-260A8728E7F1}, en la cual existe un valor de registro de nombre &lt;em&gt;System.ApplicationName&lt;/em&gt; y cuyo contenido es el nombre can&amp;oacute;nico: &lt;em&gt;Microsoft.TaskbarAndStartMenu&lt;/em&gt;. As&amp;iacute; pues, para abrir las propiedades de la barra de tareas y del men&amp;uacute; Inicio ya sabemos que&amp;nbsp;bastar&amp;iacute;a con ejecutar lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%windir%\system32\control.exe /name Microsoft.TaskbarAndStartMenu&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Para ver qu&amp;eacute; es lo que realmente se ejecuta, eche un vistazo a la clave HKEY_CLASSES_ROOT\CLSID\{0DF44EAA-FF21-4412-828E-260A8728E7F1}\Shell\Open\Command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cada &amp;iacute;tem del Panel de control puede implementar varias p&amp;aacute;ginas&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Podemos entender las p&amp;aacute;ginas como subsecciones espec&amp;iacute;ficas del &amp;iacute;tem del Panel de control. Para indicar una, debe usarse la sintaxis&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%windir%\system32\control.exe /name &lt;em&gt;Nombre_can&amp;oacute;nico&lt;/em&gt; /page &lt;em&gt;P&amp;aacute;gina&lt;/em&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ve&amp;aacute;moslo con un ejemplo:&lt;/p&gt;
&lt;p&gt;Con los conocimientos que hemos adquirido, nos resulta sencillo determinar que el &amp;iacute;tem Personalizar del Panel de control est&amp;aacute; implementado en la DLL Themecpl.dll. Es en esta DLL donde encontraremos informaci&amp;oacute;n acerca de las posibles p&amp;aacute;ginas de este &amp;iacute;tem, en la forma, como no, de fichero XML.&lt;/p&gt;
&lt;p&gt;Esta vez usaremos la aplicaci&amp;oacute;n gr&amp;aacute;fica Resource Hacker, que puede descargar gratuitamente desde &lt;a href="http://www.angusj.com/resourcehacker/"&gt;http://www.angusj.com/resourcehacker/&lt;/a&gt;. Al abrir el fichero Themecpl.dll en&amp;nbsp;esta aplicaci&amp;oacute;n,&amp;nbsp;nos encontramos con dos ficheros XML adicionales al t&amp;iacute;pico fichero de manifiesto (.manifest) que hab&amp;iacute;amos visto hasta ahora.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/7838.Tasks_5F00_CPL.PNG"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x494/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/7838.Tasks_5F00_CPL.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/7838.Tasks_5F00_CPL.PNG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Este primer fichero XML especifica una serie de tareas que puede realizar el elemento del Panel de control &amp;quot;Personalizar&amp;quot;. Estas tareas (cambiar los colores, el fondo de pantalla, etc.) se muestran como enlaces de texto justo debajo del elemento del Panel de control (suponiendo que est&amp;eacute; configurado en la vista por categor&amp;iacute;as). Y lo que es m&amp;aacute;s importante, estas tareas son indizables por el sistema de b&amp;uacute;squeda de Windows Vista. Puede obtener m&amp;aacute;s informaci&amp;oacute;n en este art&amp;iacute;culo de MSDN: &lt;a href="http://msdn.microsoft.com/en-us/library/bb776840(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb776840(VS.85).aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0027.Paginas_5F00_CPL.PNG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0027.Paginas_5F00_CPL.PNG"&gt;&lt;img src="http://msmvps.com/resized-image.ashx/__size/550x494/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/0027.Paginas_5F00_CPL.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta segunda imagen hace referencia&amp;nbsp;al segundo fichero XML, que&amp;nbsp;es el que contiene la informaci&amp;oacute;n acerca de cada una de las p&amp;aacute;ginas que implementa este &amp;iacute;tem del Panel de control. Entre las etiquetas &lt;em&gt;&amp;lt;pagedefinition&amp;gt;&amp;lt;/pagedefinition&amp;gt;&lt;/em&gt; nos encontramos con una etiqueta &lt;em&gt;&amp;lt;properties&amp;gt;,&lt;/em&gt; que hace referencia a cada una de las p&amp;aacute;ginas. El atributo &lt;em&gt;canonicalName&lt;/em&gt; nos ofrece su nombre can&amp;oacute;nico.&lt;/p&gt;
&lt;p&gt;Como vemos, el &amp;iacute;tem &amp;quot;Personalizar&amp;quot; del Panel de control admite como sintaxis:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%windir%\system32\control.exe /name Microsoft.Personalization /page pageColorization&lt;/code&gt; (para cambiar la configuraci&amp;oacute;n de color)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%windir%\system32\control.exe /name Microsoft.Personalization /page pageWallpaper&lt;/code&gt; (para cambiar el fondo de escritorio)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ejercicio&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ahora que ya sabe c&amp;oacute;mo escudri&amp;ntilde;ar en los &amp;iacute;tems del Panel de control con el fin de construir accesos directos lo m&amp;aacute;s directos posibles (valga la redundancia), le propongo como ejercicio que en un sistema Windows 7 averig&amp;uuml;e la sintaxis para un acceso directo al Monitor de confiabilidad, que como sabe en Windows 7 est&amp;aacute; algo escondido dentro del Centro de acciones (&lt;em&gt;Action Center&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Si se rinde, puede ver la soluci&amp;oacute;n&amp;nbsp;seleccionando texto a partir de aqu&amp;iacute;: &lt;span style="color:white;"&gt;control.exe Microsoft.ActionCenter /page pageReliabilityView&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Descubrir valores de Registro no documentados usando Process Monitor</title><link>http://msmvps.com/blogs/dmartin/archive/2009/08/16/descubrir-valores-de-registro-no-documentados-usando-process-monitor.aspx</link><pubDate>Sun, 16 Aug 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1716254</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;A mucha gente le gusta&amp;nbsp;personalizar su sistema de escritorio al m&amp;aacute;ximo posible. Por ello, Microsoft acostumbra a incorporar en sus sistemas operativos bastantes men&amp;uacute;s y cuadros de di&amp;aacute;logo capaces de personalizar muchos de los detalles de funcionamiento de Windows. Sin embargo, hay ciertos detalles que no son modificables desde la interfaz gr&amp;aacute;fica, solamente desde el Registro; siempre&amp;nbsp;siguiendo los pasos de alg&amp;uacute;n art&amp;iacute;culo de la documentaci&amp;oacute;n oficial de Microsoft (KB, MSDN LIbrary, Technet Library, etc.). Tambi&amp;eacute;n hay detalles que no est&amp;aacute;n documentados pero que&amp;nbsp;pueden &amp;quot;descubrirse&amp;quot; utilizando herramientas de monitoreo del Registro, como Process Monitor, tal y como se explica en este art&amp;iacute;culo.&lt;/p&gt;
&lt;p&gt;En el caso que nos ocupa, el usuario quer&amp;iacute;a modificar el tiempo de aparici&amp;oacute;n de la vista en miniatura de una aplicaci&amp;oacute;n en la barra de tareas de Windows Vista. En Windows Vista, la funcionalidad Windows Aero permite ver, a golpe de rat&amp;oacute;n, el contenido de todas y cada una de las ventanas minimizadas en la barra de tareas. El usuario intentaba buscar una forma de acortar ese tiempo de aparici&amp;oacute;n de la vista en miniatura, pues le parec&amp;iacute;a excesivo. En Internet la alternativa que es m&amp;aacute;s popular es la de modificar el valor de Registro &lt;em&gt;MouseHoverTime&lt;/em&gt; de la clave de Registro HKEY_CURRENT_USER\Control Panel\Mouse. Sin embargo, este valor influye en el tiempo que tarda en reconocerse un posicionamiento del cursor del rat&amp;oacute;n, en cualquier parte de la interfaz gr&amp;aacute;fica de Windows. Era necesario buscar alg&amp;uacute;n valor de Registro m&amp;aacute;s espec&amp;iacute;fico, y para ello iba a recurrir a Process Monitor.&lt;/p&gt;
&lt;p&gt;Antes de nada hay que comentar que no ten&amp;iacute;a la garant&amp;iacute;a de que existiera un valor de Registro que controlara ese aspecto tan espec&amp;iacute;fico de la interfaz gr&amp;aacute;fica de Windows. De existir, suelen ser par&amp;aacute;metros que solo se tienen en cuenta en las versiones de depuraci&amp;oacute;n (&lt;em&gt;checked&lt;/em&gt;) del sistema operativo. De todas formas, abr&amp;iacute; Process Monitor y establec&amp;iacute; un filtro de aquellos eventos de Registro que contuvieran en su ruta la palabra&amp;nbsp;&amp;quot;Thumbnail&amp;quot;. Inici&amp;eacute; Explorer.exe y r&amp;aacute;pidamente me encontr&amp;eacute; con&amp;nbsp;tres eventos bastante interesantes:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/5140.ExplorerThumbnails.PNG"&gt;&lt;img src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/5140.ExplorerThumbnails.PNG" border="0" style="max-height:63px;max-width:1023px;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El primer evento indica el momento en que Explorer.exe examina una directiva, &lt;em&gt;TaskbarNoThumbnail&lt;/em&gt;, configurable desde Directiva de grupo, encargada&amp;nbsp;de desactivar las vistas en miniatura de la barra de tareas. La lectura de este valor me hizo pensar que los dos valores siguientes podr&amp;iacute;an estar relacionados con lo que buscaba.&lt;/p&gt;
&lt;p&gt;Esos dos eventos siguientes hacen referencia a una b&amp;uacute;squeda de cierta rama en el Registro (&lt;em&gt;ExplorerThumbnails&lt;/em&gt;), tanto en la rama HKEY_CURRENT_USER como en la rama HKEY_LOCAL_MACHINE. El primer evento hace referencia al SID de mi usuario dentro de la rama HKEY_USERS (HKU) simplemente porque ejecut&amp;eacute; Process Monitor desde una cuenta limitada, proporcionando obviamente&amp;nbsp;el nombre de usuario y contrase&amp;ntilde;a del administrador.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Qu&amp;eacute; ser&amp;iacute;a esa rama &lt;em&gt;ExplorerThumbnails&lt;/em&gt;? La verdad es que no encontr&amp;eacute; nada documentado en Internet, pero su nombre era lo suficientemente atractivo como para seguir indagando. Una de las cosas que suelo hacer en casos como este es crear la clave que busca en este caso Explorer.exe y ver qu&amp;eacute; valores o subclaves de Registro busca a continuaci&amp;oacute;n. Eso hice: Abr&amp;iacute; Editor del Registro y cre&amp;eacute; la clave de Registro &lt;em&gt;ExplorerThumbnails&lt;/em&gt;. Volv&amp;iacute; a capturar una traza con Process Monitor y el resultado ofreci&amp;oacute; otros tres valores tan interesantes como desconocidos:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/3733.Contenidos_5F00_ExplorerThumbnails.PNG" border="0" style="max-height:146px;max-width:1031px;" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Los valores &lt;em&gt;InitialThumbnail&lt;/em&gt;, &lt;em&gt;InitialTooltip&lt;/em&gt; y &lt;em&gt;AutoPopTooltip&lt;/em&gt; me hac&amp;iacute;an pensar que efectivamente estaban relacionados con lo que realmente buscaba: Modificar el tiempo de aparici&amp;oacute;n de la vista en miniatura. En este caso podr&amp;iacute;a haber experimentado introduciendo algunos valores aleatorios para esos valores de Registro y observar los resultados, aunque en este caso recurr&amp;iacute; a una lectura del c&amp;oacute;digo fuente de Explorer.&lt;/p&gt;
&lt;p&gt;Al parecer, el valor &lt;em&gt;InitialThumbnail&lt;/em&gt; tiene que ver con el tiempo en milisegundos que tarda en aparecer la vista en miniatura desde que se sit&amp;uacute;a el cursor del rat&amp;oacute;n en la aplicaci&amp;oacute;n minimizada en la barra de tareas; &lt;em&gt;InitialTooltip&lt;/em&gt; influye en el tiempo de aparici&amp;oacute;n del texto emergente que siempre aparece encima de la vista en miniatura, un tiempo despu&amp;eacute;s. Por &amp;uacute;ltimo, &lt;em&gt;AutoPopTooltip&lt;/em&gt; influye en el tiempo que tarda en desaparecer el texto emergente. Por defecto, si no se encuentran esos valores en el Registro, el sistema supone, respectivamente, 500, 1000 y 5000 milisegundos.&lt;/p&gt;
&lt;p&gt;Para concluir, codifiqu&amp;eacute; una aplicaci&amp;oacute;n gr&amp;aacute;fica que facilitara la modificaci&amp;oacute;n de estos valores en el&amp;nbsp;Registro: &lt;a href="http://winvista.mvps.org/Ficheros/TweakThumbnails.zip"&gt;http://winvista.mvps.org/Ficheros/TweakThumbnails.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ya conoce otro posible uso de Process Monitor: Intentar descubrir valores de Registro (o ficheros) no documentados pero que pueden permitirnos configurar aspectos m&amp;aacute;s o menos interesantes del sistema operativo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Como indico en el margen izquierdo de este &lt;em&gt;blog&lt;/em&gt;, toda la informaci&amp;oacute;n que no est&amp;aacute; documentada por Microsoft es muy susceptible de cambiar e incluso de desaparecer en versiones posteriores de Windows. Este es el caso particular de esta rama del Registro, pues no es tenida en cuenta en Windows 7. Adicionalmente, deber&amp;aacute; tomar las medidas oportunas si aplica este&lt;em&gt; tip&lt;/em&gt; en un entorno de producci&amp;oacute;n, pues de seguro se trata de un par&amp;aacute;metro que no est&amp;aacute; tan probado como el resto de personalizaciones conocidas en el sistema operativo.&lt;/p&gt;</description></item><item><title>Mostrar una lista de puntos de restauraci&amp;#243;n</title><link>http://msmvps.com/blogs/dmartin/archive/2009/07/23/mostrar-una-lista-de-puntos-de-restauraci-243-n.aspx</link><pubDate>Thu, 23 Jul 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1706554</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Hace unos d&amp;iacute;as en un grupo de noticias que frecuento&amp;nbsp;un usuario que estaba utilizando &lt;a target="_blank" href="http://ekort.blogspot.com/2007/03/crear-un-listado-de-todos-los-puntos-de.html"&gt;este &lt;/a&gt;&lt;em&gt;&lt;a target="_blank" href="http://ekort.blogspot.com/2007/03/crear-un-listado-de-todos-los-puntos-de.html"&gt;script&lt;/a&gt; &lt;/em&gt;del MVP Enrique Cort&amp;eacute;s se preguntaba por qu&amp;eacute; en el fichero de resultados las horas de cada punto de restauraci&amp;oacute;n no coincid&amp;iacute;an con las mostradas en el calendario de Restaurar sistema. &lt;/p&gt;
&lt;p&gt;Esto se debe a que en la informaci&amp;oacute;n que se guarda en el almac&amp;eacute;n de puntos de restauraci&amp;oacute;n (y que es accedida por WMI en el &lt;em&gt;script&lt;/em&gt;) las fechas y horas tienen como huso horario +000 (GMT). As&amp;iacute; pues, modifiqu&amp;eacute; el &lt;em&gt;script&lt;/em&gt; para que las fechas se conviertan a la zona horaria del sistema en cuesti&amp;oacute;n y aprovech&amp;eacute; para mostrarlas en un formato m&amp;aacute;s legible. En principio el &lt;em&gt;script&lt;/em&gt; es&amp;nbsp;compatible con cualquier versi&amp;oacute;n a partir de XP, pero en Vista y&amp;nbsp;7 deber&amp;aacute; ejecutarlo con privilegios administrativos.&lt;/p&gt;
&lt;p&gt;Puede descargar el&amp;nbsp;&lt;em&gt;script&lt;/em&gt; modificado&amp;nbsp;desde &lt;a target="_blank" href="http://winvista.mvps.org/Tema.aspx?ID=418"&gt;esta p&amp;aacute;gina&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;iexcl;Que lo disfuten!&lt;/p&gt;</description></item><item><title>&amp;#191;/Savecred, /Savedcred, /Savedcreds...? Es lo mismo</title><link>http://msmvps.com/blogs/dmartin/archive/2009/07/02/191-savecred-savedcred-savedcreds-es-lo-mismo.aspx</link><pubDate>Thu, 02 Jul 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1697592</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Como quiz&amp;aacute; sepa, el comando Runas.exe de Windows XP y Windows Server 2003&amp;nbsp;sirve para ejecutar procesos en el contexto de otra cuenta de usuario. Los usuarios dom&amp;eacute;sticos normalmente lo usan para ejecutar un proceso como administrador desde una cuenta limitada. Echando un vistazo al listado de par&amp;aacute;metros de Runas.exe nos encontramos con uno que suele llamar la atenci&amp;oacute;n de bastante gente. Sirve para almacenar temporalmente en el administrador de credenciales (&lt;em&gt;Credential Manager&lt;/em&gt;) el usuario y contrase&amp;ntilde;a que va a ejecutar el programa. El atractivo de este par&amp;aacute;metro es que&amp;nbsp;no tendremos que introducir el nombre de usuario y contrase&amp;ntilde;a para ese programa durante la sesi&amp;oacute;n en curso. Sin embargo, no hay unanimidad con respecto al nombre del par&amp;aacute;metro (incluso la propia documentaci&amp;oacute;n del sistema operativo creo que presenta alguna inconsistencia al respecto): Unos lo llaman&lt;strong&gt; /savecred&lt;/strong&gt;, otros &lt;strong&gt;/savedcred&lt;/strong&gt;, otros&lt;strong&gt; /savedcreds&lt;/strong&gt;... Incluso en algunos sitios se indica que tienen sem&amp;aacute;ntica diferente. &lt;/p&gt;
&lt;p&gt;Nada m&amp;aacute;s lejos de la realidad. Runas.exe solo entiende el par&amp;aacute;metro &lt;strong&gt;/sa&lt;/strong&gt; (que contiene el m&amp;iacute;nimo n&amp;uacute;mero de letras que diferencian&lt;strong&gt; /savecred&lt;/strong&gt; de los&amp;nbsp;par&amp;aacute;metros&lt;strong&gt; /smartcard&lt;/strong&gt; y &lt;strong&gt;/showtrustlevels&lt;/strong&gt;); lo que venga despu&amp;eacute;s le es indiferente. Del mismo modo, en cuanto se encuentra con&lt;strong&gt; /p&lt;/strong&gt; supone el par&amp;aacute;metro &lt;strong&gt;/profile&lt;/strong&gt;; si se encuentra con&lt;strong&gt; /e&lt;/strong&gt; supone&lt;strong&gt; /env&lt;/strong&gt;, y as&amp;iacute; sucesivamente.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Por limitaciones del administrador de credenciales de XP Home Edition, el par&amp;aacute;metro&lt;strong&gt; /savecred&lt;/strong&gt; no es tenido en cuenta en esta versi&amp;oacute;n de Windows. Este art&amp;iacute;culo no es aplicable tampoco a Windows Vista, pues el comando Runas.exe en Windows Vista es bastante diferente del de XP y ser&amp;aacute; tema de un pr&amp;oacute;ximo art&amp;iacute;culo.&lt;/p&gt;</description></item><item><title>Sobre el atributo de s&amp;#243;lo lectura aplicado a carpetas</title><link>http://msmvps.com/blogs/dmartin/archive/2009/06/02/sobre-el-atributo-de-s-243-lo-lectura-aplicado-a-carpetas.aspx</link><pubDate>Tue, 02 Jun 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1693647</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Si se hiciera un listado con las consultas m&amp;aacute;s frecuentes en los foros de Windows, seguro que esta ocupar&amp;iacute;a una posici&amp;oacute;n bastante destacada: &amp;iquest;Por qu&amp;eacute; no puedo cambiar el atributo de solo lectura a una carpeta de mi sistema?&lt;/p&gt;
&lt;p&gt;Pese a que Microsoft dispone de un art&amp;iacute;culo al respecto (&lt;a target="_blank" href="http://support.microsoft.com/kb/326549/es"&gt;KB326549&lt;/a&gt;), considero que mucha gente a&amp;uacute;n tiene dudas sobre este tema y por eso me he decidido a escribir este art&amp;iacute;culo.&lt;/p&gt;
&lt;p&gt;Si un usuario hace clic con el bot&amp;oacute;n derecho sobre una carpeta de su sistema y selecciona &lt;em&gt;Propiedades&lt;/em&gt;, le aparecer&amp;aacute; un cuadro de di&amp;aacute;logo similar al siguiente (en un sistema XP):&lt;/p&gt;
&lt;p&gt;&lt;img height="457" width="427" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dmartin/Solo_5F00_lectura_5F00_XP.PNG" alt="Cuadro de di&amp;aacute;logo Propiedades de carpeta en Windows XP" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;Como puede observar en la imagen, la casilla &lt;em&gt;S&amp;oacute;lo lectura&lt;/em&gt; tiene un aspecto particular: No est&amp;aacute; marcada, pues no aparece la t&amp;iacute;pica marca de verificaci&amp;oacute;n en el cuadrado blanco, ni tampoco est&amp;aacute; desmarcada, pues el color del cuadrado no es blanco sino verdoso. &amp;iquest;Qu&amp;eacute; significa esto? Esa casilla es una casilla de tipo triestado; es decir, hay tres posibles estados para esa casilla: &lt;em&gt;Marcada&lt;/em&gt;, &lt;em&gt;desmarcada&lt;/em&gt; e &lt;em&gt;indeterminada&lt;/em&gt;, que es el caso que nos ocupa. Si hace clic varias veces sobre la casilla &lt;em&gt;S&amp;oacute;lo lectura&lt;/em&gt; podr&amp;aacute; ver que va cambiando el estado de la misma. Sin embargo, pese a dejar la casilla en estado marcado y pulsar &lt;em&gt;Aceptar&lt;/em&gt;, al volver a abrir las propiedades de la carpeta la casilla vuelve al estado indeterminado.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Cu&amp;aacute;l es la causa de esto?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La causa de este comportamiento es que el atributo de s&amp;oacute;lo lectura no se puede cambiar, para carpetas, desde la interfaz de Windows. Microsoft tom&amp;oacute; esta decisi&amp;oacute;n porque el atributo de s&amp;oacute;lo lectura aplicado a carpetas tiene una sem&amp;aacute;ntica que nada tiene que ver con la del atributo de s&amp;oacute;lo lectura aplicado a ficheros. El atributo de s&amp;oacute;lo lectura aplicado a carpetas &amp;uacute;nicamente quiere decir que la carpeta es una carpeta personalizada (con un icono distintivo, con un fondo, etc.). &lt;/p&gt;
&lt;p&gt;Debe quedar claro que el atributo de s&amp;oacute;lo lectura aplicado a una carpeta no quiere decir que la carpeta no se pueda eliminar o cosas por el estilo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;Para qu&amp;eacute; est&amp;aacute; la casilla S&amp;oacute;lo lectura en las propiedades de una carpeta?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Est&amp;aacute; presente porque puede aplicarse a los ficheros que contenga esa carpeta. Si desmarca la casilla &lt;em&gt;S&amp;oacute;lo lectura&lt;/em&gt; en las propiedades de una carpeta y pulsa &lt;em&gt;Aceptar&lt;/em&gt;, lo que ocurre es que se quita el atributo de s&amp;oacute;lo lectura a todos los ficheros que contenga esa carpeta, si es que contiene alguno. De igual forma, si establece el estado de la casilla como marcado (con una marca de verificaci&amp;oacute;n en el cuadrado blanco) y pulsa &lt;em&gt;Aceptar&lt;/em&gt;, todos los ficheros de esa carpeta pasar&amp;aacute;n a tomar el atributo de s&amp;oacute;lo lectura.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Entonces, &amp;iquest;c&amp;oacute;mo cambiar el atributo de s&amp;oacute;lo lectura a una carpeta?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Como ha podido ver, Explorador de Windows no permite que el usuario cambie el atributo de s&amp;oacute;lo lectura a una carpeta. Esto se debe a que Microsoft no quiere que los usuarios &amp;quot;jueguen&amp;quot; con este atributo, lo que podr&amp;iacute;a suponer que se perdieran las personalizaciones de algunas carpetas del equipo, incluidas algunas carpetas de sistema importantes para Windows. As&amp;iacute; pues, si un usuario quiere &amp;quot;jugar&amp;quot; con el atributo de s&amp;oacute;lo lectura aplicado a una carpeta, debe hacerlo desde la l&amp;iacute;nea de comandos usando el comando Attrib.exe de un modo similar al siguiente:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;attrib +r &lt;em&gt;&amp;lt;Ruta_carpeta&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esto aplicar&amp;iacute;a el atributo de s&amp;oacute;lo lectura a la carpeta indicada por &amp;lt;Ruta_carpeta&amp;gt;&lt;/p&gt;
&lt;p&gt;Similarmente, el comando&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;attrib -r &lt;em&gt;&amp;lt;Ruta_carpeta&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;desactivar&amp;iacute;a este atributo.&lt;/p&gt;
&lt;p&gt;Espero que este art&amp;iacute;culo sirva para aclarar de manera definitiva en qu&amp;eacute; consiste exactamente el atributo de s&amp;oacute;lo lectura cuando se aplica a una carpeta, por qu&amp;eacute; Explorador de Windows siempre muestra la casilla correspondiente como indeterminada, y qu&amp;eacute; ocurre cuando el usuario deja esa casilla en estado marcado o en estado desmarcado y pulsa sobre &lt;em&gt;Aceptar&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>&amp;quot;MMC no puede abrir el archivo&amp;quot;. C&amp;#243;mo analizar el error</title><link>http://msmvps.com/blogs/dmartin/archive/2009/05/03/quot-mmc-no-puede-abrir-el-archivo-quot-c-243-mo-analizar-el-error.aspx</link><pubDate>Sun, 03 May 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1691784</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Un problema que le ocurre a no poca gente que usa Windows XP consiste en que al intentar abrir un fichero con extensi&amp;oacute;n MSC (Services.msc, Diskmgmt.msc, etc.) el sistema muestra el siguiente mensaje de error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;MMC no puede abrir el archivo C:\WINDOWS\system32\services.msc.&lt;/p&gt;
&lt;p&gt;Puede ser que el archivo no exista, no sea una consola de MMC o fue creado por una versi&amp;oacute;n m&amp;aacute;s reciente de MMC. Tambi&amp;eacute;n puede ser que no tiene suficientes derechos de acceso para abrir el archivo.&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;El propio mensaje nos explica las posibles causas del problema, pero ciertamente la informaci&amp;oacute;n que ofrece es algo vaga e inespec&amp;iacute;fica. El principal problema con el que se encuentra el usuario al recibir este mensaje de error es que, al tratarse de un mensaje de error gen&amp;eacute;rico, es posible que la causa del problema que est&amp;aacute; experimentando&amp;nbsp;no quede recogida en el texto del mensaje de error.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;iquest;C&amp;oacute;mo actuar en casos como este?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hay muchas formas de actuar ante un mensaje de error de este estilo. Una manera consiste en observar si hay alg&amp;uacute;n tipo de LOG que registre informaci&amp;oacute;n detallada sobre el error (lo primero que debemos buscar es el c&amp;oacute;digo de error exacto). Es bastante probable que, de existir la posibilidad de registrar en un fichero LOG la informaci&amp;oacute;n correspondiente a un mensaje de error, esta opci&amp;oacute;n deba activarse expl&amp;iacute;citamente a trav&amp;eacute;s del registro del sistema operativo, o mediante alg&amp;uacute;n otro m&amp;eacute;todo avanzado similar. En ocasiones, como &amp;uacute;ltimo recurso para obtener informaci&amp;oacute;n detallada sobre un mensaje de error tendremos que instalar una versi&amp;oacute;n de depuraci&amp;oacute;n del sistema operativo o aplicaci&amp;oacute;n (versi&amp;oacute;n &lt;em&gt;checked&lt;/em&gt;). Las versiones &lt;em&gt;checked&lt;/em&gt; son versiones que incorporan informaci&amp;oacute;n detallada de depuraci&amp;oacute;n (trazas, aserciones, etc.) que son de mucha utilidad a los programadores de aplicaciones. De hecho, para adquirir la versi&amp;oacute;n &lt;em&gt;checked&lt;/em&gt; de un sistema operativo de Microsoft debe ser suscriptor de MSDN. Las versiones de depuraci&amp;oacute;n de los Service Packs s&amp;iacute; est&amp;aacute;n disponibles p&amp;uacute;blicamente desde el Centro de descargas de Microsoft. Por ejemplo, &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=D811F258-C95F-479A-BDF1-0D1154D700A5&amp;amp;displaylang=en"&gt;este&lt;/a&gt; es el enlace para descargar la versi&amp;oacute;n de depuraci&amp;oacute;n del SP3 de Windows XP.&lt;/p&gt;
&lt;p&gt;En este art&amp;iacute;culo se va a describir un m&amp;eacute;todo menos complicado que puede sacarnos del atolladero en bastantes casos. De hecho, nos va a sacar del atolladero en el problema concreto que se describe m&amp;aacute;s arriba.&lt;/p&gt;
&lt;p&gt;En primer lugar, instale la &amp;uacute;ltima versi&amp;oacute;n de Debugging Tools for Windows y configure el depurador Windbg apropiadamente. Para saber c&amp;oacute;mo hacer esto, siga los pasos de &lt;a target="_blank" href="http://msmvps.com/blogs/dmartin/archive/2009/04/04/tutorial-sobre-windbg-parte-i.aspx"&gt;este&lt;/a&gt; tutorial.&lt;/p&gt;
&lt;p&gt;A continuaci&amp;oacute;n, vamos a ejecutar la aplicaci&amp;oacute;n desde dentro del depurador. Para ello, haga clic sobre &lt;em&gt;File&lt;/em&gt;, &lt;em&gt;Open Executable&lt;/em&gt;. En la caja de texto &lt;em&gt;Nombre&lt;/em&gt;, escriba lo siguiente: &lt;em&gt;%SystemRoot%\system32\mmc.exe&lt;/em&gt; En la caja de texto &lt;em&gt;Arguments&lt;/em&gt;, escriba lo siguiente: &lt;em&gt;Services.msc&lt;/em&gt; (o el nombre del fichero MSC que no es capaz de abrir). Pulse &lt;em&gt;Abrir&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Aseg&amp;uacute;rese de que Windbg le informe de que la informaci&amp;oacute;n sobre los s&amp;iacute;mbolos es correcta y pulse F5 (Go).&lt;/p&gt;
&lt;p&gt;Cuando se muestre el mensaje de error en pantalla, active la ventana de Windbg y pulse Ctrl+Pausa o haga clic sobre &lt;em&gt;Debug&lt;/em&gt;, &lt;em&gt;Break&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ahora tendr&amp;aacute; que examinar la pila de ejecuci&amp;oacute;n de todos y cada uno de los hilos activos de la aplicaci&amp;oacute;n para ver si encuentra el c&amp;oacute;digo de error como&amp;nbsp;par&amp;aacute;metro de alguna de&amp;nbsp;las funciones que all&amp;iacute; aparezcan. Para cambiar de hilo, puede hacerlo&amp;nbsp;gr&amp;aacute;ficamente desde el men&amp;uacute; &lt;em&gt;View&lt;/em&gt;, &lt;em&gt;Processes and Threads&lt;/em&gt;. Seleccione con un simple clic el hilo que quiera examinar (quedar&amp;aacute; marcado en negrita) e introduzca en la caja de texto de Windbg el comando &lt;em&gt;kb&lt;/em&gt; para mostrar la pila de ejecuci&amp;oacute;n. En mi caso, esta es la pila de ejecuci&amp;oacute;n del hilo responsable de abrir el fichero MSC:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;0:000&amp;gt; kb&lt;br /&gt;ChildEBP RetAddr&amp;nbsp; Args to Child&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;0007f030 7c91df4a 7c809590 00000002 0007f05c ntdll!KiFastSystemCallRet&lt;br /&gt;0007f034 7c809590 00000002 0007f05c 00000001 ntdll!ZwWaitForMultipleObjects+0xc&lt;br /&gt;0007f0d0 7e3995f9 00000002 0007f0f8 00000000 kernel32!WaitForMultipleObjectsEx+0x12c&lt;br /&gt;0007f12c 6c6d4b52 00000001 0007f160 ffffffff USER32!RealMsgWaitForMultipleObjectsEx+0x13e&lt;br /&gt;0007f14c 6c6d4cbd 000024ff ffffffff 00000000 DUSER!CoreSC::Wait+0x3a&lt;br /&gt;0007f170 6c6d4eb9 000024ff 00000000 0007f19c DUSER!CoreSC::WaitMessage+0x40&lt;br /&gt;0007f180 7e3d8e33 000024ff 00000000 00000064 DUSER!MphWaitMessageEx+0x22&lt;br /&gt;0007f19c 7c91e473 0007f1ac 00000008 000024ff USER32!__ClientWaitMessageExMPH+0x1e&lt;br /&gt;0007f1b0 7e399418 7e3a770a 00000000 00000000 ntdll!KiUserCallbackDispatcher+0x13&lt;br /&gt;0007f1e8 7e3a49c4 000301b4 00000000 00000001 USER32!NtUserWaitMessage+0xc&lt;br /&gt;0007f210 7e3ba956 7e390000 000c44f8 00000000 USER32!InternalDialogBox+0xd0&lt;br /&gt;0007f4d0 7e3ba2bc 0007f62c 00000001 00000000 USER32!SoftModalMessageBox+0x938&lt;br /&gt;0007f620 7e3e63fd 0007f62c 00000028 00000000 USER32!MessageBoxWorker+0x2ba&lt;br /&gt;0007f678 7e3d0853 00000000 00e76008 00bafeb0 USER32!MessageBoxTimeoutW+0x7a&lt;br /&gt;0007f698 7e3e6579 00000000 00e76008 00bafeb0 USER32!MessageBoxExW+0x1b&lt;br /&gt;0007f6b4 4754f5fe 00000000 00e76008 00bafeb0 USER32!MessageBoxW+0x45&lt;br /&gt;0007f6f0 0107a216 00e76008 00002010 00e86458 mmcbase!MMCErrorBox+0x7f&lt;br /&gt;0007f740 01058ce9 00000003 &lt;strong&gt;80040154&lt;/strong&gt; 00000000 mmc!DisplayFileOpenError+0x191&lt;br /&gt;0007f794 0104093c 0007f748 00000004 00e6e018 mmc!CAMCDoc::OnOpenDocument+0x90&lt;br /&gt;0007f7e0 5f81424a 0007fc14 00000001 00038988 mmc!CAMCMultiDocTemplate::OpenDocumentFile+0x21f&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Marcada en negrita est&amp;aacute; la parte importante de la traza, el error en cuesti&amp;oacute;n (0x80040154). &amp;iquest;Qu&amp;eacute; quiere decir ese c&amp;oacute;digo de error? El propio Windbg nos lo puede decir:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&lt;p&gt;0:001&amp;gt; !error 80040154&lt;br /&gt;Error code: (HRESULT) 0x80040154 (2147746132) - Clase no registrada&lt;/p&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Un error de clase no registrada. Para sab&amp;eacute;r qu&amp;eacute; clase es la afectada, puede usar Process Monitor (&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&lt;/a&gt;), monitorizar el sistema mientras intenta volver a abrir el archivo MSC y analizar con calma los resultados NOT FOUND que hagan referencia al Registro del sistema, o bien puede seguir las pautas de &lt;a target="_blank" href="http://msmvps.com/blogs/dmartin/archive/2008/08/04/problemas-con-la-inicializaci-243-n-de-explorer-exe.aspx"&gt;este&lt;/a&gt; art&amp;iacute;culo referido a Explorer.exe.&lt;/p&gt;
&lt;p&gt;Para no hacerle perder el tiempo, le dir&amp;eacute; que en este caso la clase afectada est&amp;aacute; en la librer&amp;iacute;a Msxml3.dll y se puede volver a registrar con el comando &lt;em&gt;regsvr32 msxml3.dll&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Otro c&amp;oacute;digo de error que se puede encontrar es el c&amp;oacute;digo 0x2 (archivo no encontrado). En este caso lo ideal es hacer uso de Process Monitor (&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx&lt;/a&gt;), monitorizar el sistema mientras intenta volver a abrir el archivo MSC y analizar con calma los resultados NOT FOUND que hagan referencia, en esta ocasi&amp;oacute;n, al sistema de archivos. Un caso que he analizado ten&amp;iacute;a como culpable al virus Vundo, aunque en general podr&amp;iacute;a tratarse de cualquier otro tipo de &lt;em&gt;malware&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Una duda que quiz&amp;aacute; tenga es, &amp;iquest;c&amp;oacute;mo distinguir en la salida del comando &lt;em&gt;kb&lt;/em&gt; lo que es un c&amp;oacute;digo de error de lo que no? En general yo suelo descartar en primer lugar lo que seguro s&amp;eacute; que no es un c&amp;oacute;digo de error. Por ejemplo, en la traza de pila del ejemplo puede ver que 7e3a770a es un valor que est&amp;aacute; cerca de las direcciones de retorno de cada una de las funciones, por lo que probablemente no&amp;nbsp;sea un c&amp;oacute;digo de error. Los valores 00bafeb0 y similares, es decir, un n&amp;uacute;mero hexadecimal no muy alto, suelen ser punteros a estructuras de datos, por lo que tampoco suelen ser c&amp;oacute;digos de error. Los valores muy bajos (00000002), o que comiencen por 8 (80040154), s&amp;iacute; suelen ser c&amp;oacute;digos de error. Por supuesto, en este caso el nombre de la funci&amp;oacute;n mmc!DisplayFileOpenError+0x191, nos da la pista fundamental.&lt;/p&gt;
&lt;p&gt;Espero que este art&amp;iacute;culo les ayude a investigar a fondo los mensajes de error en Windows en los que no aparece de manera expl&amp;iacute;cita el c&amp;oacute;digo de error. En futuros art&amp;iacute;culos ver&amp;aacute; c&amp;oacute;mo atacar un problema similar pero esta vez&amp;nbsp;causado por una excepci&amp;oacute;n de aplicaci&amp;oacute;n, o bien por una versi&amp;oacute;n incompatible de una DLL en el sistema, usando para ello la aplicaci&amp;oacute;n Dependency Walker.&lt;/p&gt;</description></item><item><title>&amp;#191;Internet Explorer se cuelga con frecuencia?</title><link>http://msmvps.com/blogs/dmartin/archive/2009/02/16/191-internet-explorer-se-cuelga-con-frecuencia.aspx</link><pubDate>Mon, 16 Feb 2009 06:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1672654</guid><dc:creator>dmartin</dc:creator><description>&lt;p&gt;Aunque Internet Explorer no sea algo que conozca en profundidad, &amp;uacute;ltimamente mucha gente me ha estado enviando mensajes indicando que su navegador se bloquea a menudo. He estado analizando por encima el volcado de memoria de un sistema afectado y al parecer el complemento Adobe Flash es el presunto culpable. De hecho, desactivando dicho complemento en IE, desde &lt;em&gt;Herramientas&lt;/em&gt;, &lt;em&gt;Administrar complementos&lt;/em&gt;, se ha solucionado el 100% de los casos que he tratado. Otra sugerencia que ha resultado &amp;uacute;til consiste en desinstalar la versi&amp;oacute;n 10 de Adobe Flash y a continuaci&amp;oacute;n instalar la versi&amp;oacute;n 9. As&amp;iacute; que si ha llegado a esta p&amp;aacute;gina buscando informaci&amp;oacute;n sobre un cuelgue de Internet Explorer, espero que esta informaci&amp;oacute;n le resulte &amp;uacute;til.&lt;/p&gt;
&lt;p&gt;Buscando en la web de Adobe, he visto que se trata de un posible &lt;em&gt;bug&lt;/em&gt; que ya est&amp;aacute; siendo analizado, pero a&amp;uacute;n no hay soluci&amp;oacute;n: &lt;a href="http://bugs.adobe.com/jira/browse/FP-1145"&gt;http://bugs.adobe.com/jira/browse/FP-1145&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si conoce alguna web con contenido Flash que haga que el navegador se cuelgue con frecuencia, o si ha logrado obtener unos pasos que reproduzcan el problema de manera consistente, le agradecer&amp;iacute;a que contactara conmigo ya sea a trav&amp;eacute;s de la secci&amp;oacute;n de comentarios de esta entrada o a trav&amp;eacute;s de la p&amp;aacute;gina &lt;em&gt;Contact&lt;/em&gt; de la parte izquierda de este &lt;em&gt;blog&lt;/em&gt;. Gracias de antemano.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Actualizaci&amp;oacute;n 25/02/2009:&lt;/strong&gt; Gracias a todos por la informaci&amp;oacute;n. El problema ya est&amp;aacute; solucionado en la nueva versi&amp;oacute;n de Adobe Flash Player que se puede descargar desde &lt;a href="http://www.get.adobe.com/flashplayer"&gt;http://get.adobe.com/flashplayer&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>