4

我有一个要为All Users安装的 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 将设置文件复制到单独的用户目录,用户最终拥有不同的设置文件。

我是否将文件存储在错误的位置?我是否以不正确的方式进行操作?

4

1 回答 1

10

这个也咬过我。该ProgramData文件夹具有共享读取访问权限,没有共享写入访问权限。您当然可以在安装过程中更改文件夹的权限,但我认为这与微软的意图相反。请参阅其他问题以获取一些有用的链接

微软认为应该怎么做。

于 2012-05-08T22:23:55.420 回答