Pregunta

¿Cuál es el lugar correcto para almacenar los archivos de datos del programa que son los mismos para todos los usuarios pero deben poder escribirse en 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 parte de usuarios normales. ¿Es eso cierto? ¿Cómo puedo recuperar ese directorio mediante programación utilizando Platform SDK?

¿Fue útil?

Solución

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%.

Otros consejos

Aquí hay un gran resumen de las diferentes opciones: 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 archivos de programa?

     

Una actualización de código de aplicación común es   esto: " mi aplicación solía escribir   Archivos a archivos de programa. Se sentía como   un buen lugar para ponerlo como cualquier   otro. Tenía el nombre de mi aplicación en   Ya, y porque mis usuarios eran   administradores, funcionó bien. Pero ahora veo   que este no sea un gran lugar   pegar las cosas como alguna vez pensé,   Porque con UAC incluso Administradores   Ejecutar con privilegios estándar de usuario   la mayor parte del tiempo Entonces, ¿dónde debería   poner mis archivos en su lugar? "

En realidad SHGetFolderPath está en desuso.

SHGetKnownFolderPath debería usarse en su lugar.

Puedes usar:

CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);

Consulte el El artículo de Raymond Chen sobre esta pregunta específica .

En resumen, estás pidiendo un agujero de seguridad .

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