有几种方法可以获取应用程序数据目录的路径:
%APPDATA%
环境变量SHGetFolderPath
CSIDL_APPDATA
从程序中获取路径的最佳方法是什么?使用环境变量时是否有任何问题?
哪种方法在XP,Vista和即将推出的版本中最安全?
答案 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']