2010-04-26 64 views
2

;)我正在編寫一個.NET應用程序,讓用戶連接到給定的服務器。應用程序中的ALI信息存儲在服務器中。但我想/需要存儲用戶的以下信息:存儲地點:用戶連接信息?

  • 他連接的服務器持續
  • 他用來連接最後 的用戶名(沒有,沒有密碼,永遠)。

任何想法在哪裏存儲這最好?應用程序配置文件不明智(用戶!= admin,application.config爲他寫保護)。所以,我的選擇是:

  • 在註冊表中。 2個鍵在我自己的子鍵下。
  • 在一種ini文件中,存儲在用戶的數據目錄(AppData)中。這也可能允許以後擴展(像保存更多的信息,其中一些可能不適合註冊表)。

任何小費?其他選擇?我傾向於使用我自己的子文件夾去AppData目錄 - 僅僅因爲它是一個很好的準備,以便稍後保持像配置的本地副本等。

回答

1

加密,並將其保存在註冊表中。

1

您可以作爲用戶設置存儲在app.config中(所以它們在更改後並不真正存儲在app.config中,但可以使用相同的API訪問)。

這裏看到更多的信息,關於適用範圍:

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

+0

而究竟如何將這個允許用戶寫入的應用程序目錄。即使一個user.config生活在那裏也不會被每個Windows實踐和準則寫入(它使應用程序目錄進入正常用戶的只讀模式)。 – TomTom 2010-04-26 09:05:46

+0

它不會,它會自動將user.config文件存儲在可寫目錄中,但應用程序仍然可以使用Properties.Settings讀取和寫入設置,而無需關心此問題。 – 2010-04-26 09:28:42

+1

你可以在這裏找到更多關於它存儲在哪裏的信息:http://msdn.microsoft.com/en-us/library/ms379611%28VS.80%29.aspx – 2010-04-26 09:30:06

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) 
}