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

Ang*_*ker 4 vb6 windows-xp appdata windows-7 userappdatapath

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

Const ssfCOMMONAPPDATA = &H23
Dim strAllUsersPath As String

strAllUsersPath = CreateObject("Shell.Application").NameSpace(ssfCOMMONAPPDATA).Self.Path
Run Code Online (Sandbox Code Playgroud)

在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将设置文件复制到单独的用户目录,所以用户最终会拥有不同的设置文件.

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

Dab*_*rnl 10

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

微软认为应该怎么做.

  • ProgramData没有"共享"任何访问权限.CommonAppData是完全正常的,并且*推荐*和*首选*由Microsoft提供,通常的应用程序数据 - 顾名思义.问题是您的安装程序应该在那里创建应用程序的子文件夹并在其上设置适当的安全性以允许所需的访问(通常您希望完全控制用户).默认情况下,使用*owner*access创建文件和文件夹.我对卡尔的任何事情都持谨慎态度,他经常抨击事情并错过优点 - 但我们都不是完美的. (4认同)
  • “Microsoft 认为应该如何完成”链接已损坏 (3认同)
  • 您还可以执行"首次运行"检查,然后提升并创建子文件夹结构,并在安装程序达不到时设置安全性. (2认同)