2009-01-31 71 views
12

有获取应用程序路径数据目录的几种可能的方式:使用%APPDATA%环境变量 获取“应用程序数据”目录路径的最佳途径?

  • 调用SHGetFolderPath

    • CSIDL_APPDATA

    什么是获取路径的最佳途径从一个程序内?当我使用环境变量时是否有任何问题?

    哪种方法在XP,Vista和即将推出的版本中最安全?

  • 回答

    12

    我建议致电SHGetFolderPath()是最合适的,便携的方法;诸如读取环境变量或者(更糟糕的)尝试从注册表中提取它的替代方法可能会在未来使您受到影响。

    Raymond Chen has an article解释了为什么从注册表中拉出这样的路径是一个坏主意。在Python

    string appDataPath = Environment.SpecialFolder.ApplicationData; 
    
    +1

    我读了一篇文章,我之前我做了什么文章告诉我*不*做:) – 2009-01-31 16:54:52

    0

    如果你在.NET编程,你可以使用这个在ctypes.windll.shell32.SHGetFolderPathW返回一个unicode字符串的Unicode文件路径的情况下,而os.environ['APPDATA']返回一个字节的字符串。

    +0

    SpecialFolder.ApplicationData是一个枚举,而不是路径。使用Environment.GetFolderPath,如@ jMM的答案中所示 – JulianM 2010-09-02 02:49:28

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

    你需要使用GetFolderPath方法获得实际的路径Environment.SpecialFolder.ApplicationData只是一个枚举。

    0

    如果有人想知道,在Ruby中的命令将如下所示:

    appDataPath = ENV['APPDATA']