Vista和ProgramData

时间:2008-09-25 06:00:31

标签: windows-vista directory shared programdata

存储程序数据文件的正确位置是什么,这些文件对于每个用户都是相同的但是必须可以为程序写入? MS Windows XP上的等效位置是什么?我已经读过普通用户安装后C:\ ProgramData不可写。真的吗?如何使用Platform SDK以编程方式检索该目录?

5 个答案:

答案 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

应该使用

SHGetKnownFolderPath

答案 3 :(得分:1)

您可以使用:

CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);

答案 4 :(得分:1)

请参阅Raymond Chen's article on this specific question

总之,你要求的是一个安全漏洞