存储位置:用户连接信息?

时间:2010-04-26 08:44:00

标签: .net app-config

;)我正在编写一个.NET应用程序,用户连接到给定的服务器。应用程序中的ALl信息存储在服务器中。但我想/需要为用户存储以下信息:

  • 他连接的服务器
  • 他最后连接的用户名 (不,没有密码,永远不会)。

知道在哪里存储这个最好吗?应用程序配置文件不合理(用户!= admin,application.config为他写保护)。所以,我的选择是:

  • 在注册表中。我自己的子键下有2个键。
  • 在一种ini文件中,存储在用户的数据目录(AppData)中。这可能还允许以后的扩展(如同保存更多信息,其中一些可能不适合注册表)。

任何提示?其他选择?到目前为止,我倾向于使用我自己的子文件夹去AppData目录 - 只是因为它是一个很好的准备,以便以后保持像配置等的本地副本。

3 个答案:

答案 0 :(得分:1)

您可以将app.config存储为用户设置(因此它们在更改后并未真正存储在app.config中,但可以使用相同的API进行访问)。

有关范围的更多信息,请参见此处:

http://msdn.microsoft.com/en-us/library/a65txexh%28VS.80%29.aspx

答案 1 :(得分:1)

加密并将其保存在注册表中。

答案 2 :(得分:0)

如何做以下 dineshrekula wrote

using System.Security;
using System.Security.Cryptography;

var guid = Assembly.GetEntryAssembly().GetCustomAttributes(typeof(System.Runtime.InteropServices.GuidAttribute), false);
this.entropy = Encoding.UTF8.GetBytes((guid[0] as System.Runtime.InteropServices.GuidAttribute).Value);

private SecureString Unprotect(byte[] data)
{
    return UTF8Encoding.UTF8.GetString(ProtectedData.Unprotect(data, this.entropy, DataProtectionScope.CurrentUser)).ToSecureString();
}

private void Protect(string data)
{
    ProtectedData.Protect(UTF8Encoding.UTF8.GetBytes(data), this.entropy, DataProtectionScope.CurrentUser)
}