Search code examples
hololens

Environment.userName is Unknown in Hololens2


I have an hololens2 application that I built in Unity. The Environment.Username works in the Unity editor correctly, but when I deployed to the HL2, the Environment.UserName is Unknown. Under the player settings I've applied Enterprise Application, WebCam,Microphone, HumanInterfaceDevice, UserAccountInformation, Bluetooth, SystemManagement, UserDataTasks and Contacts.

It builds just fine and deploys to HL2 without problems, but the UserName is Unknown. When I go to the HL2 start menu, it displays my name correctly.

Please Help,

Martin F.


Solution

  • Please try the following code, it should display the account name signed into the HoloLens2:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using TMPro;
    using UnityEngine;
    #if WINDOWS_UWP
    using Windows.System;
    #endif
    public class UserName : MonoBehaviour
    {
        [SerializeField]
        private TMP_Text userNameText = null;
        // Start is called before the first frame update
        async void Start()
        {
    #if WINDOWS_UWP
            IReadOnlyList<User> users = await User.FindAllAsync();
            StringBuilder sb = new StringBuilder();
            foreach (User u in users)
            {
                string name = (string)await u.GetPropertyAsync(KnownUserProperties.AccountName);
                if (string.IsNullOrWhiteSpace(name))
                {
                    name = "unknown account name";
                }
                sb.AppendLine(name);
            }
            userNameText.text = sb.ToString();
    #endif
        }
    }