保存Windows XP和Vista应用程序的用户信息的最佳位置

问题描述:

我需要以加密形式保存用户的登录信息,以便为此应用程序构建,但我不确定保存文件的最佳位置。我不希望将它保存到程序应用程序文件夹中,因为我需要它为每个用户。保存Windows XP和Vista应用程序的用户信息的最佳位置

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

编辑:使用C++。

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

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

+1

Vista默认没有C:\ Documents and Settings \%username% - >它在C:\ Users \%username%中,并且可以更改,所以路径不应该被硬编码。 – cruizer 2008-09-29 05:27:30

+3

正确获取此文件夹的方法是通过调用: SHGetSpecialFolderPath(NULL,szPath,CSIDL_PERSONAL,false) – Bill 2008-10-21 15:28:40

你使用.NET? IsolatedStorage怎么样?这样你就不必担心目录位置,它只会在那里...

+0

您可能需要注意应用程序的新版本/安装仍可以看到您的原始独立存储文件。 – FryHard 2008-09-29 04:55:55

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

用户信息应该总是进入%HOMEDRIVE %% HOMEPATH%(映射到用户主目录)的某个子目录中。没有例外。 每个用户的特定应用程序设置的好地方是%APPDATA%中的子目录。它映射到XP上的“%HOMEDRIVE %% HOMEPATH%\ Application Data”,并映射到:Vista上的“%HOMEDRIVE %% HOMEPATH%\ AppData \ Roaming”。

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

我发现这篇文章在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); 

如果您使用的是.NET,从而获得特殊的文件夹,您可以使用

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); 

非漫游版本。