ОБНОВЛЕНИЕ: Имейте в виду, что, хотя современные / метро приложения не могут соваться друг с другом, настольные приложения будут иметь неограниченный доступ ко всем данным, хранящимся через эти API. См. http://www.hanselman.com/blog/SavingAndRetrievingBrowserAndOtherPasswords.aspx, который включает код, демонстрирующий это.
В Win8 появился новый API под названием PasswordVault , предназначенный для решения всех этих сложных проблем. Действительно прост в использовании, безопасен и может быть настроен пользователями на роуминг между своими компьютерами, поэтому им нужно вводить учетные данные только один раз. Я успешно использовал это для токенов OAuth
Получение учетных данных (обратите внимание на глупое исключение, которое вызывает WinRT ... они действительно должны просто возвращать ноль):
const string VAULT_RESOURCE = "[My App] Credentials";
string UserName { get; set; };
string Password { get; set; };
var vault = new PasswordVault();
try
{
var creds = vault.FindAllByResource(VAULT_RESOURCE).FirstOrDefault();
if (creds != null)
{
UserName = creds.UserName;
Password = vault.Retrieve(VAULT_RESOURCE, UserName).Password;
}
}
catch(COMException)
{
// this exception likely means that no credentials have been stored
}
Хранение учетных данных:
vault.Add(new PasswordCredential(VAULT_RESOURCE, UserName, Password));
Удаление учетных данных (когда пользователь нажимает кнопку выхода из системы в вашем приложении):
vault.Remove(_vault.Retrieve(VAULT_RESOURCE, UserName));