获取“Ap​​plication Data”目录路径的最佳方法是什么?

时间:2009-01-31 16:21:31

标签: winapi path

有几种方法可以获取应用程序数据目录的路径:

  • 使用%APPDATA%环境变量
  • 使用SHGetFolderPath
  • 致电CSIDL_APPDATA

从程序中获取路径的最佳方法是什么?使用环境变量时是否有任何问题?

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

5 个答案:

答案 0 :(得分:12)

我建议调用SHGetFolderPath()是最合适,最便携的方法;替代方案,例如阅读环境变量,或者(更糟糕的是)尝试从注册表中提取它可能会在未来绊倒你。

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

答案 1 :(得分:12)

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

您需要使用GetFolderPath方法获取实际路径,因为Environment.SpecialFolder.ApplicationData只是一个枚举。

答案 2 :(得分:0)

如果您使用.NET编程,可以使用:

string appDataPath = Environment.SpecialFolder.ApplicationData;

答案 3 :(得分:0)

Python中的一个重要区别:在unicode文件路径ctypes.windll.shell32.SHGetFolderPathW的情况下,返回一个unicode字符串,而os.environ['APPDATA']返回一个字节字符串。

答案 4 :(得分:0)

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

appDataPath = ENV['APPDATA']