【问题标题】:Best place to save user information for Windows XP and Vista applications保存 Windows XP 和 Vista 应用程序用户信息的最佳位置
【发布时间】:2010-09-13 22:27:06
【问题描述】:

我需要为我正在构建的这个应用程序以加密形式保存用户的登录信息,但我不确定保存文件的最佳位置。我不想按照每个用户的需要将其保存到程序应用程序文件夹中。

那么保存它的最佳文件夹(或方法)是什么?

编辑:使用 C++。

【问题讨论】:

    标签: file windows-vista windows-xp save


    【解决方案1】:

    是的,本地应用程序路径看起来像是赢家。

    我在 MSDN 中找到这篇文章以使用 C++ 获取它:http://msdn.microsoft.com/en-us/library/bb762494.aspx

    例子:

    char localAppPath[MAX_PATH];
    SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, localAppPath);
    

    【讨论】:

    • 您不应将用户凭据存储在纯文件中,即使已加密。您确实应该将这些保存在数据保护存储中。但毕竟这是你的选择...... :-)
    【解决方案2】:

    如果您使用 .NET 获取可以使用的特殊文件夹

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    

    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
    

    用于非漫游版本。

    【讨论】:

      【解决方案3】:

      根据Wikipedia,似乎 C:\Documents and Settings\%username%\Local Settings\Application Data 可能是合适的位置。文章称此位置用于“特定于用户和特定于计算机的应用程序设置”。

      编辑:Cruizer 在 cmets 中指出(我会在那里回复,但我还不能发表评论)在 Vista 中它是 C:\Users\%username% 并且它不应该是硬编码的。谢谢。

      【讨论】:

      • Vista 没有 C:\Documents and Settings\%username% --> 默认在 C:\Users\%username% 中,并且可以更改,因此路径不应该硬编码
      • 获取此文件夹的正确方法是调用:SHGetSpecialFolderPath(NULL, szPath, CSIDL_PERSONAL, false)
      • 修改我的评论。您需要使用 CSIDL_APPDATA。 CSIDL_PERSONAL 用于用户文档目录。
      【解决方案4】:

      用户信息应始终放在 %HOMEDRIVE%%HOMEPATH% 的某个子目录中(映射到用户主目录)。没有例外。 每个用户的应用程序特定设置的好地方是 %APPDATA% 内的子目录。这映射到:XP 上的“%HOMEDRIVE%%HOMEPATH%\Application Data”和 Vista 上的“%HOMEDRIVE%%HOMEPATH%\AppData\Roaming”。

      【讨论】:

        【解决方案5】:

        使用数据保护 API (DPAPI) - XP 和 Vista 中 CryptoAPI 的一部分。这是 DPAPI 的一个很好的概述 - http://msdn.microsoft.com/en-us/library/ms995355.aspx

        【讨论】:

          【解决方案6】:

          您使用的是 .NET 吗? IsolatedStorage 怎么样?这样您就不必担心目录位置,它就在那里......

          【讨论】:

          • 您可能需要注意应用程序的新版本/安装仍然可以看到您原来的隔离存储文件。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-04
          相关资源
          最近更新 更多