更新:モダン/メトロアプリはお互いのものを突くことが制限されていますが、デスクトップアプリケーションはこれらのAPIを介して保存されたすべてのデータに無制限にアクセスできることに注意してください。これを示すコードを含むhttp://www.hanselman.com/blog/SavingAndRetrieveingBrowserAndOtherPasswords.aspxを参照してください。
Win8にはPasswordVaultと呼ばれる新しいAPIがあり、これらすべての難しい問題を処理するように設計されています。本当に使いやすく、安全で、ユーザーが自分のマシン間をローミングするように構成できるため、資格情報を1回入力するだけで済みます。これをOAuthトークンに使用しました
クレデンシャルの取得(WinRTが発生する愚かな例外に注意してください...実際にはnullを返す必要があります):
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));