有几种可能的方法可以获取应用程序数据目录的路径:
- 使用
%APPDATA%
环境变量 - 打电话
SHGetFolderPath
给CSIDL_APPDATA
从程序中获取路径的最佳方法是什么?使用环境变量时有什么问题吗?
在 XP、Vista 和即将推出的版本中,哪种方法最安全?
我建议调用SHGetFolderPath()
是最合适且可移植的方法;替代方案,例如读取环境变量,或者(更糟糕的)尝试从注册表中提取它,将来可能会让您绊倒。
Raymond Chen 有一篇文章解释了为什么从注册表中提取此类路径是一个坏主意。
string appDataPath =
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
您需要使用 GetFolderPath 方法获取实际路径,因为 Environment.SpecialFolder.ApplicationData 只是一个枚举。
如果你在 .NET 中编程,你可以使用这个:
string appDataPath = Environment.SpecialFolder.ApplicationData;
Python 的一个重要区别:在 unicode 文件路径的情况下,ctypes.windll.shell32.SHGetFolderPathW
返回一个 unicode 字符串,而os.environ['APPDATA']
返回一个字节字符串。
如果有人想知道,在 Ruby 中,命令如下所示:
appDataPath = ENV['APPDATA']