Pregunta

Tenemos un programa en el que el instalador verifica la existencia de un archivo de configuración y, si existe, no copia ese archivo (se supone que el usuario ha modificado su archivo de configuración y desea conservar esas modificaciones).Desafortunadamente, esta es una aplicación anterior a Vista y mantiene el archivo de configuración en Archivos de programa.El problema es que, si borra manualmente el directorio cuando reinstala, cierta API todavía piensa que hay un directorio allí.VB6, por ejemplo, y su cuadro de diálogo de búsqueda de archivos ven la carpeta, sin embargo, el explorador, cmd shell, etc. no pueden ver la carpeta.Escribir sobre el archivo aún deja el archivo antiguo allí (para algunas API, pero no para el explorador) que no se puede eliminar excepto en el cuadro de diálogo Buscar archivo.

¿Qué está pasando con estas carpetas fantasma y cómo eliminamos el archivo para que todas las API vean lo mismo?Tal vez tenga algo que ver con TxF, o el indexador para búsqueda, pero tanto el instalador que usamos (InnoSetup) como partes de la aplicación (las partes escritas en VB6) ven la versión anterior del archivo, y todo lo demás ve la versión actual.

¿Fue útil?

Solución

Como dijo Oskar Duveborn, es muy probable que lo que se está viendo es el comportamiento de virtualización de Vista.

Cuando un equipo tiene control de cuentas de usuario (UAC) está habilitado, los usuarios estándar y los programas no elevadas no se les permite escribir en la carpeta Programas. Windows en lugar silencio redirecciona archivos a la subcarpeta correspondiente de %AppData%\Local\VirtualStore (por ejemplo, C:\Users\MyUser\AppData\Local\VirtualStore).

Si usted navega la carpeta real en el Explorador, verá el botón de la barra 'Archivos de compatibilidad', que se puede utilizar para navegar por la tienda virtual en su lugar.

Tenga en cuenta que esto es sólo el comportamiento de compatibilidad en Windows -. Su programa debe escribir en su propia subcarpeta de %AppData%

Para obtener más información, ver este TechNet Magazine artículo .

Otros consejos

No sé si estoy en el camino correcto, pero ¿Vista no virtualiza %programfiles% para aplicaciones que intentan escribir en él o que están marcadas como "no haciendo esto de la manera correcta"?(y, por lo tanto, lo mueve a algún lugar de la parte del usuario del sistema de archivos, sin informarle a la aplicación heredada, lo que lo hace un poco transparente).

Los archivos redirigidos de la tienda virtual se almacenan en algún lugar de %appdata%; también puede averiguar la ubicación marcando la opción "Archivos de compatibilidad" en el Explorador cuando se encuentre en la ubicación con alias.Hasta donde yo sé, debes dejar de escribir en %programfiles% para deshacerte de este comportamiento.

¿Se refiere a la carpeta Datos de programa (C: \ Documents and Settings \ Usuario \ AppData)? No estoy en mi máquina de Vista, pero creo que ese es el camino, y que yo sepa no se limpió después de una desinstalación.

El enlace TechNet de Ant anterior (respuesta aceptada) ya no es válido.El nuevo enlace es:

http://support.microsoft.com/kb/927387 - Problemas comunes de virtualización de archivos y registros en Windows Vista

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top