为Windows XP和Vista应用程序保存用户信息的最佳场所

时间:2020-03-06 14:51:38  来源:igfitidea点击:

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

那么将其保存到的最佳文件夹(或者方式)是什么?

编辑:使用C ++。

解决方案

我们正在使用.NET吗?隔离存储怎么样?这样,我们就不必担心目录的位置,它就在那里...

在XP和Vista中使用数据保护API(DPAPI)作为CryptoAPI的一部分。这是DPAPI的良好概述http://msdn.microsoft.com/zh-cn/library/ms995355.aspx

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

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

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

是的,本地应用程序路径看起来很成功。

我在MSDN中找到了这篇文章,以在C ++中获得它:http://msdn.microsoft.com/zh-cn/library/bb762494.aspx

例子:

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

如果我们使用.NET来获取特殊文件夹,则可以使用

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

或者

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

非漫游版本。