Search code examples
c#windowshostnameuwp

How to get local host name in C# on a Windows 10 universal app


string machineName = System.Environment.MachineName;

This code doesn't work for me, error code 'Environment' does not contain a definition for 'MachineName'

I'm using Visual Studio 2015 and Universal App with C#

Please also list the namespace I need to use when you post an answer.


Solution

  • You need to use NetworkInformation.GetHostNames.

    var hostNames = Windows.Networking.Connectivity.NetworkInformation.GetHostNames();
    

    But note that this method will return multiple HostNames.

    In my case, it returns four HostNames of which DisplayNames are MyComputerName, MyComputerName.local plus two IP addresses.

    So I guess it's probably safe to do -

    using Windows.Networking;
    using Windows.Networking.Connectivity;
    
    
    var hostNames = NetworkInformation.GetHostNames();
    var hostName = hostNames.FirstOrDefault(name => name.Type == HostNameType.DomainName)?.DisplayName ?? "???";