vista ver ventanas puedo previsualizacion previa porque muestra funciona activar winapi windows-7 windows-vista uac special-folders

winapi - ver - ¿Windows 7 restringe el acceso a la carpeta como lo hace Vista?



vista previa no funciona (1)

Noté que en mi aplicación, la mayoría de los problemas de compatibilidad eran causados ​​por el "acceso denegado" para algunas carpetas, como por ejemplo:

Application Data [C:/ProgramData] Desktop [C:/Users/Public/Desktop] Documents [C:/Users/Public/Documents] Favorites [C:/Users/Public/Favorites] Start Menu [C:/ProgramData/Microsoft/Windows/Start Menu] Templates [C:/ProgramData/Microsoft/Windows/Templates]

¿Windows 7 tiene el mismo problema que Vista? Con la ayuda de los miembros de Stack Overflow, sé que en Vista puedo usar CSIDL_APPDATA para habilitar el acceso al archivo sin problemas de UAC o errores de "acceso denegado". ¿Esto también es válido para Windows 7?


No es un "problema", es una característica. Se llama Control de cuentas de usuario (UAC) y es una de las formas en que la seguridad del sistema se ajustó en Windows Vista. Windows 7 de hecho conserva un modelo de seguridad similar.

No hay absolutamente ninguna razón por la cual su aplicación deba interferir con las carpetas del sistema en primer lugar. Como ya aprendió, Windows proporciona varias ubicaciones para que las aplicaciones almacenen datos, de forma temporal y permanente. Microsoft ha recomendado durante mucho tiempo que aproveche estas carpetas: eran la ubicación preferida para almacenar datos incluso en versiones anteriores de Windows. El hecho de que ignoró este consejo, pero su aplicación siguió funcionando, fue en realidad el error. El hecho de que las versiones posteriores de Windows finalmente cerraron esa vulnerabilidad de seguridad, rompiendo así su aplicación, no debe ser inesperada ni desagradecida.

Puede encontrar más información sobre dónde almacenar sus datos en esta página . También vea este artículo de blog , que intenta resumir la matriz de documentación técnica en una tabla práctica. Y, como siempre, Raymond Chen ofrece una visión general, aunque instructiva, de las diferencias entre las ubicaciones:

La diferencia más importante entre Mis documentos y Datos de la aplicación es que Mis documentos es donde los usuarios almacenan sus archivos, mientras que los Datos de aplicación es donde los programas almacenan sus archivos.

En otras palabras, si coloca algo en CSIDL_MYDOCUMENTS (Mis documentos), debe esperar que el usuario lo renombre, mueva, elimine, envíe por correo electrónico a sus amigos, todo tipo de cosas que los usuarios hagan con sus archivos. Por lo tanto, los archivos que van allí deben ser cosas que los usuarios reconocerán como "sus cosas". Documentos que han creado, música que han descargado, ese tipo de cosas.

Por otro lado, si coloca algo en CSIDL_APPDATA (Datos de aplicación), es menos probable que el usuario se CSIDL_APPDATA con él. Aquí es donde pone los datos de soporte de su programa que no es realmente algo con lo que desea que el usuario se meta, pero que aún debe estar asociado con el usuario. Tablas de puntuación alta, configuración de programa, personalizaciones, excepciones de ortografía ...

Hay otro directorio llamado CSIDL_LOCAL_APPDATA (Configuración local / Datos de aplicación) que actúa como CSIDL_APPDATA , excepto que no se copia si el perfil del usuario deambula. (La rama "Configuración local" no se copia como parte del perfil de usuario itinerante). Piénselo como una ubicación de almacenamiento por usuario y por máquina. Los cachés y datos no esenciales similares deben mantenerse aquí, especialmente si son grandes. Otros ejemplos de datos no itinerantes por usuario son sus directorios %TEMP% y Archivos temporales de Internet.