windows-vista - reveal - see folders
Vista y ProgramData (5)
Puedes usar:
CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);
¿Cuál es el lugar correcto para almacenar los archivos de datos del programa que son los mismos para cada usuario, pero deben poder escribirse para el programa? ¿Cuál sería la ubicación equivalente en MS Windows XP? He leído que C: / ProgramData no se puede escribir después de la instalación por usuarios normales. ¿Es eso cierto? ¿Cómo puedo recuperar ese directorio programáticamente usando Platform SDK?
SHGetFolderPath () con CSIDL de CSIDL_COMMON_APPDATA.
Lea más en http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx
Si necesita la ruta en un archivo por lotes, también puede usar la variable de entorno% ALLUSERSPROFILE%.
Vea el artículo de Raymond Chen sobre esta pregunta específica .
En resumen, está pidiendo un agujero de seguridad .
En realidad, SHGetFolderPath
está en desuso.
SHGetKnownFolderPath
debería usarse en su lugar.
Hay un gran resumen de las diferentes opciones aquí: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files .aspx
¿Dónde debo escribir los datos del programa en lugar de los archivos del programa?
Una actualización de código de aplicación común es esta: "mi aplicación solía escribir archivos en archivos de programa. Se sentía como un lugar tan bueno para ponerlo como cualquier otro. Tenía el nombre de mi aplicación en él, y debido a que mis usuarios eran administradores, funcionó bien. Pero ahora veo que este no es un lugar tan bueno para poner cosas como alguna vez pensé, porque con UAC incluso los administradores ejecutan privilegios estándar similares a los de los usuarios la mayoría del tiempo. Entonces, ¿dónde debería poner mis archivos? ? "