Ang*_*ker 14 vb6 settings windows-xp windows-7
我被要求更新过去6年一直在WinXP上运行的VB6应用程序.客户端想要使用Windows 7.到目前为止,应用程序将其设置存储在位于应用程序目录中的INI文件中.XP和7之间的一个关键区别是你不能再写C:\Program Files\AppFolder了.
我试图找出文件系统应该存储设置的位置?鉴于应用程序仍然需要在WinXP上运行,我有点困惑.
在WinXP上,我有以下内容:
C:\Documents and Settings\profilename\Application Data
C:\Documents and Settings\profilename\Local Settings\Application Data
Run Code Online (Sandbox Code Playgroud)
在Windows 7上,我有以下内容:
C:\Users\profilename\AppData\Local
C:\Users\profilename\AppData\LocalLow
C:\Users\profilename\AppData\Roaming
Run Code Online (Sandbox Code Playgroud)
这些文件夹中的每一个都有子文件夹,似乎存储各种产品的设置/文件
那2个问题:
Mar*_*rkJ 12
在XP/Vista/Windows 7上可以使用许多特殊文件夹:
CSIDL_APPDATA文件夹是您可能最感兴趣的文件夹.此处存储的数据可供漫游用户登录的任何计算机使用.这是存储简单配置数据的最佳位置.所有用户都对此(以及最后一个)文件夹具有写入权限.请注意,上述文件夹均不适用于用户生成的数据!这将属于My Documents层次结构.CSIDL_LOCAL_APPDATA应用程序数据,这些数据始终是当前计算机的本地数据,但是基于每个用户预留.此文件夹中的数据在漫游的基础上不可用,因此它应该是用户在登录到其他计算机时可能不会错过的数据.我无耻地从Karl Peterson的一篇好文章中复制了上面的解释,为VB6程序员解释了这一点.Karl还有一个即时可用的课程,可以帮助你找到目录,但恕我直言,他这次是过于复杂的事情.Bob Riemersma使用Shell对象在一行中有更好的方法,如下所示.编辑鲍勃在下面的评论解释了为什么最好使用后期绑定而不是早期绑定.
Const ssfCOMMONAPPDATA = &H23
Const ssfLOCALAPPDATA = &H1c
Const ssfAPPDATA = &H1a
Dim strAppData As String
strAppData = _
CreateObject("Shell.Application").NameSpace(ssfAPPDATA).Self.Path
Run Code Online (Sandbox Code Playgroud)