Está en la página 1de 7

La aplicacin DLTCAD 2010 que

no corra en Windows 7, Process


Monitor y su solucin.
Hola a todos,
Realmente me da alegra volver a escribir por aqu despus de algunos das,
especialmente cuando tengo algo que me haya ayudado a mi aprendizaje y que
quiero compartir.
En este caso, como en muchas ocasiones, se trata de un problema reportado con
una aplicacin llamadaDLTCAD 2010 desde los estupendos Foros de Microsoft
Answers en Espaol, me tom el trabajo entonces de descargar un trial de la
aplicacin en cuestin y probar yo mismo, afortundamente, tambin me dio un
error y pude solucionarlo.
A continuacin, como siempre divido en: El problema, La causa y su Solucin.

El problema
Cuando se instala la aplicacin en Windows 7, despus de tratar de ejecutarla
por primera vez, estaba recibiendo un Crash de la aplicacin, es decir, que
dejaba de responder sin ni siquiera haber iniciado:

dlt2010D.exe dej de funcionar


Al intentar cerrar la aplicacin, inmeditamente reciba un mensaje de error
bastante extrao:

Estaba ocurriendo una Excepcin y, segn el mensaje, no se poda encontrar el


archivo Config.tmp en la ruta de instalacin: C:\Program Files
(x86)\DLTCAD2010 DEMO\
Al aceptar el mensaje (OK), la aplicacin no terminaba de iniciar. Sin
importar cuntas veces la tratar de ejecutar, siempre era el mismo
procedimiento, crash y posterior mensaje de error para finalmente cerrar el
proceso y no abrir nada.

La causa
Lo primero que intent hacer fue buscar el archivo Config.tmp pero por
supuesto, no apareci por ningn lado, a juzgar por su extensin y nombre
adems, parecer ser algn tipo de archivo temporal que se ejecuta antes de
iniciar la aplicacin y que tal vez, pueda contener la configuracin o los
parmetros iniciales necesarios para que la aplicacin arranque
correctamente.
*Nota: Claro est, slo estoy suponiendo porque la verdadera respuesta, la
tiene slo el fabricante implicado en el desarrollo.
En la compatibilidad de aplicaciones con Windows 7, suele ser prctico como
primera instancia, intentar con dos alternativas, pestaa de compatibilidad
que har una Mentira sobre la versin hacindole creer a la aplicacin
que est en una versin anterior de Windows o bien Ejecutarla como
administrador elevando los permisos por el cambio en materia de seguridad que
sufri Windows desde XP a Windows 7 ya que todos los usuarios en Vista y 7
trabajan predetermindamente como usuarios estndar.
Sin embargo, aplicando el modo de compatibilidad con Windows XP Service
Pack 3 o inferior, de una vez el ejecutable pasa a pedir elevacin de
privilegios para que se cambie el token de acceso y s se est ejecutando
realmente como un administrador (Tal cual se haca en Windows XP).
Esto fue lo que hice con el ejecutable, fui a las propiedades (clic derecho,
propiedades), pestaa de Compatibilidad y seleccion Ejecutar este programa
en modo de compatibilidad para Windows XP (Service Pack 3):

A continuacin, ejecut el programa, elev los privilegios y de sorpresa, la


aplicacin estaba corriendo perfectamente:

Aqu haba una gran incgnita, realmente la aplicacin s era compatible con
Windows 7, pero pudo haberla hecho funcionar o la mentira sobre versin o la
elevacin de privilegios.
En un escenario emergente, sta solucin podra bastar, pero no en todas las
empresas estn dispuestas a dejar que se eleven permisos aunque sea para un
proceso porque entonces tendran que garantizar una cuenta que lo haga,
adems de que si la aplicacin originalmente no pide elevacin de privilegios
es porque parece estar hecha con el fin de funcionar bajo un token estndar.
Cambi nuevamente el modo de compatibilidad a como estaba presentando el
problema, y llam a la mejor herramienta que me poda ayudar en ese momento,
me refiero a Process Monitor de Sysinternals.
El proceso es el mismo de siempre, ejecutarlo, limpiar el primer log que
genera, ponerlo a correr nuevamente y ejeacutar la aplicacin hasta recibir
el mensaje de error.
El siguiente paso es buscar qu puede darnos Process Monitor, de nuevo, como
siempre, la recomendacin es hacerlo de abajo hacia arriba y utilizando
primero palabras que estn relacionadas con el problema, para este caso por
supuesto, la primera sera: Config.tmp
Para activar el filtro de bsqueda, basta con ir al men Edit y
seleccionar Find, ejecutarlo desde la barra de comandos de Procmon o bien
presionar CTRL + F

Para mi fortuna, bast con los primeros y nicos resultados para encontrar
tal vez la clave del problema:

Si vamos ms a fondo, Windows est utilizando la funcin CreateFile para


tratar de crear el archivoConfig.tmp en la ruta: C:\Program Files
(x86)\DLTCAD2010 DEMO\, pero como resultado est obteniendo un ACCESS
DENIED; esto significa que la ruta existe, que se intenta hacer la operacin
pero que no se consiguen los permisos necesarios sobre la ubicacin en este
caso para escribir y que el archivo quede.
Lo interesante est en que en Windows XP, la aplicacin funciona
perfectamente, y si hago lo mismo con Process Monitor, ver que el trabajo
con el archivo Config.tmp se comporta diferente:

Como ven, es exactamente la misma operacin, pero esta vez con un resultado
de SUCCESS, lo que difiere de que tuvo los permisos necesarios para escribir.
Esto es apenas lgico y es donde est la raz del problema, los permisos NTFS
cambian completamente junto con todo el esquema de seguridad como haba
comentado antes, la aplicacin en Windows XP, tiene todos los privilegios
para escribir sobre cualquier ruta porque la cuenta predeterminada es de
Administrador. En Windows 7 por otro lado, aunque la cuenta est dentro del
grupo de administradores en modo de aprobacin, desde que est el Control de
Cuentas de Usuario (UAC) activo, todo lo que se corra se har bajo el mismo
token que el Explorer.exe (Proceso padre), es decir, como si se estuviera
corriendo sobre un usuario limitado.
Al yo elevar los permisos en la ejecucin dentro de Windows 7, le est
diciendo al proceso que cambie de token de usuario estndar a usuario

administrador, por lo que los permisos pasarn hacer idnticos a como si se


estuviera ejecutando en Windows XP, por eso sigue sin problemas.

La solucin
Como el problema estaba en los permisos, es decir, acceso denegado para
escribir en la carpetaDLTCAD2010 DEMO, tena que revisar cmo estaban
establecidos de forma predeterminada para el usuario actual, para esto, basta
con ir al directorio implicado, hacer clic derecho, Propiedades, ir a la
pestaa de Seguridad y hacer clic en el botn Editar:

En la edicin de Seguridad sobre los permisos NTFS en Vista y en 7, se puede


ver cada usuario implicado en los directorios o unidades que hayamos
seleccionado, as como cada permiso que tienen sobre los objetos.
En este caso, me situ sobre mi usuario WinGuy del grupo Users (Usuarios) y
esto fue lo que me mostr Windows:

Como ven, el permiso de Escritura (Write) no estaba seleccionado


para Permitir (Allow), lo que quiere decir que mis usuarios estndar, no
pueden crear nada en este directorio (DLTCAD2010 DEMO).
Hay una diferencia notable con respecto a los Administradores de la mquina:

Todos los permisos estn habilitados, incluyendo los de escribir, Aqu la


clave de todo!
Esto resolva el por qu elevando los privilegios que pasa de estar entre los
Usuarios a los Administradores, la aplicacin estaba funcionando bien.
Para finalizar entonces, slo tuve que asignar el permiso de escritura sobre
mi usuario y aplicar todos los cambios con slo seleccionar el grupo de Users
(Usuarios) y despus habilitar Write (Escritura):

Por ltimo y para confirmar la teora, ejecut la aplicacin sin elevar los
privilegios (Haciendo doble clic sobre el acceso directo) y .. Aplicacin
funcionando!

Como hemos visto, no todos los problemas son culpa de Windows =)


Espero pueda ser de utilidad, sea por como en mi caso, aprender algo nuevo o
bien porque tengan un problema similar con esta aplicacin como es el caso
que se plante en los Foros y de donde surgi todo esto.
Saludos,