存储程序数据文件的正确位置是什么,这些文件对于每个用户都是相同的但是必须可以为程序写入? MS Windows XP上的等效位置是什么?我已经读过普通用户安装后C:\ ProgramData不可写。真的吗?如何使用Platform SDK以编程方式检索该目录?
答案 0 :(得分:8)
SHIGetFolderPath(),CSIDL为CSIDL_COMMON_APPDATA。
在http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx
了解详情如果您需要批处理文件中的路径,还可以使用%ALLUSERSPROFILE%环境变量。
答案 1 :(得分:7)
这里有不同选项的精彩摘要:http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx
我应该在哪里编写程序数据 而不是程序文件?
常见的应用程序代码更新是 这个:“我的应用程序曾经写过 文件到程序文件。感觉就像 把它当作任何一个好地方 其他。它有我的应用程序的名称 它已经,因为我的用户是 管理员,它运作良好。但现在我明白了 这可能不是一个伟大的地方 按照我曾经想过的那样坚持下去 因为有了UAC甚至管理员 使用标准的类似用户的权限运行 大多数时候。那么,我应该在哪里 把我的文件改为?“
答案 2 :(得分:4)
实际上已弃用SHGetFolderPath
。
答案 3 :(得分:1)
您可以使用:
CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);
答案 4 :(得分:1)
请参阅Raymond Chen's article on this specific question。
总之,你要求的是一个安全漏洞。