Live Connect SDK (http://msdn.microsoft.com/en-us/live/default) の上に Metro C# SkyDrive API を構築しています。Windows 8 では、ユーザーは Windows 8 マシンにサインインすることを選択できます。 LOCAL アカウントまたは LIVE アカウントのいずれかを使用します。
Live Connect SDK を使用する場合、
// assume wlscopes is properly set
LiveAuthClient liveAuthClient = new LiveAuthClient();
LiveLoginResult loginResult = await liveAuthClient.LoginAsync(wlscopes);
// do some stuff on skydrive
liveAuthClient.Logout(); // <-- issue only with live account, not local
LOCALアカウントを使用すると、ログアウトされます(素晴らしい)
LIVE アカウントを使用しているときに同じコードを呼び出すと、未処理の例外が発生します。このエラーの周りに try {} catch {} を追加することさえできません。
例外:
Cannot sign out from the application since the user account is connected. (Exception from HRESULT: 0x8086000E)
明らかに、ライブ アカウントでログインしているユーザーはログアウトできないため、現在のユーザーがライブ アカウントを使用しているかどうかを API で検出する必要があるため、logout() メソッドの呼び出しを防ぐことができます。
そう....私の質問は、ユーザーが Windows 8 でサインインしたアカウントの種類をどのように知ることができるかということです。