酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windowsストアアプリで現在ログインしているユーザーの名前と画像を取得する

この記事は、2012/7/13現在にリリースされている最新の「Windows 8 Release Preview(Build 8400)」、「Visual Studio 2012 RC」を利用しております。「Windows 8 Release Preview」は開発中のものあることにご留意ください。

Windows 8のスタート画面の右上には、現在ログイン中のユーザーのアイコンと名前が表示されています。これらの情報には、Windows.System.UserProfile名前空間のUserInformationクラスを使用することで取得することができます。usingディレクティブに以下の宣言があることを前提としています。

using Windows.System.UserProfile;

まずは名前等の情報を取得する前に、名前情報にアクセスする権限を調べましょう。NameAccessAllowedプロパティを参照することで許可する権限があるのかどうかを判定できます。

protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    // アプリから名前にアクセスすることが許可されているか取得する
    var isAllowed = UserInformation.NameAccessAllowed;
    if (!isAllowed)
    {
        // 許可されていない場合は何もしない
        return;
    }
}

次に名前を取得してみましょう。アカウントに紐付けられた名前を非同期メソッドを使用して取得します。

// 表示されている名前を取得する
var displayName = await UserInformation.GetDisplayNameAsync();
// 結果:"CH3COOH (酢酸)"

// 名前を取得する
var firstName = await UserInformation.GetFirstNameAsync();
// 結果:"(酢酸)"

// 苗字を取得する
var lastName = await UserInformation.GetLastNameAsync();
// 結果:"CH3COOH"

Win8 CPの時点では使用できませんでしたが、Win8 RPではアカウントに紐づけられた画像を取得することができます。アカウントに紐づけられた画像というのは、名前の横に書かれた以下のアイコンになります。

GetAccountPictureメソッドを使用し、アカウントに紐づけられた画像ファイルを開き、得られたストリームをBitmapImageインスタンスに読み込ませ、Imageコントロールで表示させています。

// アカウントに紐付けられた画像を取得する
var accountPicture = UserInformation.GetAccountPicture(AccountPictureKind.LargeImage);

// 取得した画像ファイルを読み込みImageコントロールで表示する
var strm = await accountPicture.OpenReadAsync();
var bitmap = new BitmapImage();
bitmap.SetSource(strm);
pictureImage.Source = bitmap;

上記のコードを実行してみました。かなり簡素な結果となってしまいましたが、僕のWindows Liveのアカウント画像が表示されているのがわかります。