2008-09-25 38 views
14

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

回答

8

SHGetFolderPath()与CSIDL的CSIDL_COMMON_APPDATA。

http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx

更多如果您需要在批处理文件的路径,你也可以使用%ALLUSERSPROFILE%环境变量。

+1

我相信这实际上是%ALLUSERSPROFILE%,S – 2009-05-03 21:53:23

+0

错误,是的,这是正确的,我错过了S. :-) – 2009-05-05 20:23:27

1

您可以使用:

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

Raymond Chen's article on this specific question

总之,您要求安全漏洞

+3

该应用程序不会被管理员使用,并且每个可以登录到计算机的人都可信在我们正在处理的公司中。因此,在用户之间共享数据不是一个安全问题。在Vista上,可以在公用文件夹中共享图片和电影。 Progams也应该有这个。 – frast 2008-09-25 11:47:08

7

还有就是这里的不同选项的大汇总:http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx

我在哪里应该写程序数据 相反的程序文件?

常见的应用程序代码更新 这样的:“我以前写 文件,程序文件的应用程序这感觉就像 良好的地方把它作为任何 其他它有我的应用程序的名称上 它了。 ,因为我的网友们 管理员,它工作得很好。但是现在我看到 这可能不是那么大的地方 坚持的东西,因为我曾经以为, 因为与UAC甚至管理员 运行与标准用户享有特权 大部分时间。那么,我应该在哪里 把我的文件呢?“