gpt4 book ai didi

vb6 - 我应该在哪里存储应用程序特定的设置?

转载 作者:行者123 更新时间:2023-12-03 21:48:57 26 4
gpt4 key购买 nike

我被要求更新过去 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

在 Windows 7 上,我有以下内容:
C:\Users\profilename\AppData\Local
C:\Users\profilename\AppData\LocalLow
C:\Users\profilename\AppData\Roaming

这些文件夹中的每一个都有子文件夹,似乎存储各种产品的设置/文件

所以2个问题:
  • 鉴于所有这些文件夹,我在哪里存储我的设置?
  • 我假设有一个漂亮的 Windows API 调用可以给我这个文件夹的正确位置。我希望它适用于 XP 和 7。我的假设是否正确?如果是这样,一个链接将不胜感激。
  • 最佳答案

    在 XP/Vista/Windows 7 上,您可以使用许多特殊文件夹:

  • CSIDL_APPDATA文件夹是您可能最感兴趣的文件夹。此处存储的数据可供漫游用户在他们登录的任何机器上使用。这是存储简单配置数据的最佳位置。所有用户都拥有对这个(也是最后一个)文件夹的写入权限。请注意,以上文件夹均不适用于用户生成的数据!那将适本地属于我的文档层次结构。
  • 编辑:正如 Cody Gray 在评论中建议的那样,也可以考虑 CSIDL_LOCAL_APPDATA用于始终位于当前计算机本地的应用程序数据,但基于每个用户保留。此文件夹中的数据在漫游时不可用,因此应该是用户登录到其他计算机时可能不会错过的数据。

  • 我无耻地从 good article 复制了上面的解释。 Karl Peterson 为 VB6 程序员解释了这一点。卡尔还有一个 ready-to-use class这将帮助您找到目录,但恕我直言,这次他的事情过于复杂了。 Bob Riemersma has a better way in one line , 使用 Shell object , 如下。 编辑 Bob 在下面的评论解释了为什么最好使用后期绑定(bind)而不是早期绑定(bind)。
    Const ssfCOMMONAPPDATA = &H23 
    Const ssfLOCALAPPDATA = &H1c
    Const ssfAPPDATA = &H1a
    Dim strAppData As String

    strAppData = _
    CreateObject("Shell.Application").NameSpace(ssfAPPDATA).Self.Path

    我认为 continue to use INI files 没问题在这些目录中。

    关于vb6 - 我应该在哪里存储应用程序特定的设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273424/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com