12

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

  • 使用%APPDATA%环境变量
  • 打电话SHGetFolderPathCSIDL_APPDATA

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

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

4

5 回答 5

12

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

Raymond Chen 有一篇文章解释了为什么从注册表中提取此类路径是一个坏主意。

于 2009-01-31T16:44:47.917 回答
12
    string appDataPath = 
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

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

于 2010-02-03T23:09:11.773 回答
0

如果你在 .NET 中编程,你可以使用这个:

string appDataPath = Environment.SpecialFolder.ApplicationData;
于 2009-02-10T16:05:00.940 回答
0

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

于 2009-10-02T10:52:03.123 回答
0

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

appDataPath = ENV['APPDATA'] 
于 2012-02-27T17:47:07.953 回答