2009-01-31 14 views
12

Hay varias maneras posibles de obtener la ruta de acceso al directorio de datos de aplicación:¿La mejor manera de obtener la ruta al directorio "Datos de la aplicación"?

  • utilizando el entorno %APPDATA% variables
  • llamando SHGetFolderPath con CSIDL_APPDATA

¿Cuál es la mejor manera de obtener la ruta desde dentro de un programa? ¿Hay algún problema cuando utilizo la variable de entorno?

¿Qué método es más seguro en XP, Vista y las próximas versiones?

Respuesta

12

Sugeriría que llamar al SHGetFolderPath() es el método más apropiado y portátil; las alternativas, como leer una variable de entorno o (peor) tratar de extraerlo del registro, probablemente lo hagan tropezar en el futuro.

Raymond Chen has an article explicando por qué es una mala idea sacar tales rutas del registro.

+1

leí el artículo, y yo previamente Hice exactamente lo que me dijo que el artículo * * No hacer :) –

0

Si está programando en .NET puede utilizar esto:

string appDataPath = Environment.SpecialFolder.ApplicationData; 
+0

SpecialFolder.ApplicationData es una enumeración, no una ruta. Use Environment.GetFolderPath como se muestra en la respuesta de @ jMM – JulianM

0

Una diferencia importante en Python: en el caso de las rutas de archivos Unicode ctypes.windll.shell32.SHGetFolderPathW devuelve una cadena Unicode, mientras que os.environ['APPDATA'] devuelve una cadena de bytes.

12
string appDataPath = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Tendrá que utilizar el método GetFolderPath obtener la ruta actual, Environment.SpecialFolder.ApplicationData es sólo una enumeración.

0

En caso de que alguien se preguntaba, en Ruby el comando sería el siguiente aspecto:

appDataPath = ENV['APPDATA'] 
Cuestiones relacionadas