web-dev-qa-db-ja.com

Windows 10 C#UWPユニバーサルWindowsアプリでユーザー名を取得する

私は、Windows 10UWPの世界でさらに別の簡単なタスクに苦労しています。

現在のWindowsユーザーのUserNameが必要です。 Environment.UserNameは、UWPでは重要ではありません。そして、これまでのところ、Webを検索しても役に立たなかった。したがって、ここに私の投稿。

誰でも?これは今は不可能ですか?

11
Ian GM
  1. Package.appxmanifestのアプリに "ユーザーアカウント情報"機能を追加します

Package.appxmanifest, User Account Information

  1. 次のコードを使用して、ユーザーの表示名を取得します。

    private async void Page_Loaded(object sender, RoutedEventArgs e)
    {
        IReadOnlyList<User> users = await User.FindAllAsync();
    
        var current = users.Where(p => p.AuthenticationStatus == UserAuthenticationStatus.LocallyAuthenticated && 
                                    p.Type == UserType.LocalUser).FirstOrDefault();
    
        // user may have username
        var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);
        string displayName = (string)data;
    
        //or may be authinticated using hotmail 
        if(String.IsNullOrEmpty(displayName))
        {
    
            string a = (string)await current.GetPropertyAsync(KnownUserProperties.FirstName);
            string b = (string)await current.GetPropertyAsync(KnownUserProperties.LastName);
            displayName = string.Format("{0} {1}", a, b);
        }
    
        text1.Text = displayName;
    }
    
18
Sergiu Cojocaru

ご覧のとおり、利用可能なUserクラス(UWP)があります: https://msdn.Microsoft.com/en-us/library/windows/apps/windows.system.user。 aspx

これを試して:

var users = await User.FindAllAsync(UserType.LocalUser);
var name = await users.FirstOrDefault().GetPropertyAsync(KnownUserProperties.AccountName);
4
marcinax

Application.OnLaunched メソッドからアプリを起動したユーザーをピックアップすることもできます。 ここ を参照してください。

ただし、マニフェストでユーザー情報機能を宣言する必要があります。

簡単な例(省略記号は、適用できない生成されたコードを示します):

sealed partial class App : Application
{
    ... 
    protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        User currentUser = e.User;
        ... 
    }
    ...
}          
2
Louis Watson
// get username
public string UserNameStr { get; set; } = WindowsIdentity.GetCurrent().Name;

これにより、完全なドメイン\ユーザー名が取得されます。

1
Ebey Tech