私は、Windows 10UWPの世界でさらに別の簡単なタスクに苦労しています。
現在のWindowsユーザーのUserNameが必要です。 Environment.UserNameは、UWPでは重要ではありません。そして、これまでのところ、Webを検索しても役に立たなかった。したがって、ここに私の投稿。
誰でも?これは今は不可能ですか?
次のコードを使用して、ユーザーの表示名を取得します。
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;
}
ご覧のとおり、利用可能な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);
Application.OnLaunched メソッドからアプリを起動したユーザーをピックアップすることもできます。 ここ を参照してください。
ただし、マニフェストでユーザー情報機能を宣言する必要があります。
簡単な例(省略記号は、適用できない生成されたコードを示します):
sealed partial class App : Application
{
...
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
User currentUser = e.User;
...
}
...
}
// get username
public string UserNameStr { get; set; } = WindowsIdentity.GetCurrent().Name;
これにより、完全なドメイン\ユーザー名が取得されます。