如何写入常用的Application Data文件夹?

时间:2012-05-08 22:05:18

标签: windows-7 vb6 windows-xp appdata userappdatapath

我有一个Visual Basic 6.0应用程序,我想为所有用户安装,例如,无论谁登录到计算机,该设置都保存在一个位置。我有以下代码来找到公共位置:

Const ssfCOMMONAPPDATA = &H23
Dim strAllUsersPath As String

strAllUsersPath = CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path

在Windows XP上,此路径指向C:\Documents and Settings\All Users\Application Data\文件夹。设置会在那里复制设置文件,一切都很棒。 Visual Basic 6.0应用程序可以随时更改它。

在Windows 7上,此路径指向c:\ProgramData文件夹。需要管理员权限的设置会将文件复制到那里。但是,当我的Visual Basic 6.0应用程序启动并访问该文件时,Windows 7将设置文件复制到C:\ Users {USER LOGIN} \ AppData \ Local \ VirtualStore \并在那里执行所有操作。因此,因为对于每个用户,Windows 7将设置文件复制到单独的用户目录,所以用户最终会拥有不同的设置文件。

我是否将文件存放在错误的位置?我是以错误的方式做的吗?

1 个答案:

答案 0 :(得分:10)

这个人也咬我了。 ProgramData文件夹具有共享读访问权限,没有共享写访问权限。您当然可以在安装期间更改文件夹的权限,但我认为这与微软的意思相反。 有关一些有用的链接,请参阅this other question

How Microsoft thinks it should be done.