Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=26)
-   -   Windows Vista, archivos fantasma (https://www.clubdelphi.com/foros/showthread.php?t=68694)

roman 30-06-2010 19:32:39

Windows Vista, archivos fantasma
 
Hola,

No termino (ni empiezo) de entender cómo funciona el sistema de archivos y permisos en Windows Vista. Les planteo la situación a ver si ustedes entienden.

Tengo una aplicación, llamada ExCol, que tiene su propio instalador hecho con InnoSetup. Dicha instalación crea un directorio excol en Archivos de programa (o, mejor dicho, Program Files) quedando así la estructura de archivos

Código:

excol
  |
  +-- data
  |    |
  |    +-- aciertos.cds
  |    +-- claves.cds
  |    +-- criterios.cds
  |    +-- respuestas.cds
  |
  +-- excol.exe

Los archivos cds son tablas para componentes ClientDataSet.

Este programa lo he instalado en mi pc en diversas ocasiones y hoy tocaba actualizar los datos.

Pues bien, al momento de ejecutar el programa me percato que los datos no corresponden a los actuales. Para probar, quito los archivos aciertos.cds y respuestas.cds (que, en realidad, son los que se actualizan) y al ejecutar el programa, tan campante, ni se queja y sigue trabajando como si nada con quién sabe qué archivos. Incluso pongo en el código un

Código Delphi [-]
ShowMessage(cdsAciertos.FileName);

que muestra que el FileName apunta a excol\data\aciertos.cds, ¡que es uno de los que acabo de borrar!

Ahora bien, si ejecuto el programa como Administrador, entonces sí que se queja de que dichos archivos no existen. Más aún, si vuelvo a colocar los archivos y ejecuto como administrador, ¡aparecen los nuevos datos!

O sea, que al parecer, Windows Vista maneja dos (o más) copias de un mismo archivo, según cómo se ejecute la aplicación.

He de decir que esto me parece estúpido, pero no es la primera vez que lo noto. Ya con el BDE he notado que según como acceda, usa distintas versiones del archivo de configuración.

¿Alguien sabe qué sucede y cómo lidiar con ello?

// Gracias

Neftali [Germán.Estévez] 01-07-2010 11:56:35

No trabajo nada co Vista y poco con Windows 7 (sólo por temas de testing), pero me suena que es un cambio por temas de seguridad.

Me da la impresión de que vista "ofrece" a un usuario normal un "Archivos de programa" que no es real. Cosa que supongo que sí ve un Administrador.

Si miras los directorios desde el Explorador de Windows ves esto:



Si los miras con algun otro programa que te enseñe los directoris ocultos (o cambias las opciones del explorador) verás esto:



Me suena que VisTa/W7 por temas de seguridad (UAC) no permite escribir ficheros de datos (sí instalaciones) en "Programn Files" y estos van a parar (de forma transparente al usuario) a "Program Data". Revisa ese directorio.

No te lo puedo asegurar, pero me "suenan campanas" de que la cosa va por ahí.

Mantenos informados, que la cosa interesa.

roman 01-07-2010 17:06:28

Hola Neftalí, gracias por responder.

Sí he visto que Vista presenta un nombre de directorio en el Explorer que es distinto, o mejor dicho la traducción al idioma del sistema, que el que maneja internamente en inglés.

En Vista puedes ver el Explorer:





y si das clic en la barra de direcciones aparece la dirección "real":




Al parecer, si guardo mi directorio de datos en ProgramData (que corresponde a CSIDL_COMMON_APPDATA, no tengo problemas. Pero lo curioso del caso es que el archivo "fantasma" qe me presenta realmente existe en algún lado pues puedo trabajar con él sin problema.

Ahora, en cuanto al Program Files o Archivos de Programa también sucede algo curioso:

Si abres una ventana DOS y escribes:

Código:

cd "\Program Files"
te lleva al directrio esperado con todos sus subdirectorios. Pero si escribes:


Código:

cd "\Archivos de programa"
te lleva a un directorio aparentemente vacío pero que resulta ser el mismo pues aunque no muestra el contenido si puedes cambiarte directamente con CD a otros directorios.

Seguiré viendo a ver si averiguo algo.

// Saludos


La franja horaria es GMT +2. Ahora son las 10:14:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi