8
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.

Jerry
  • 1,704
  • 5
  • 20
  • 40
  • 1
    just guessing - https://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.networkinformation.gethostnames.aspx ? – quetzalcoatl Sep 30 '15 at 23:14
  • Dosen't seem to work. Can't find that function even I use the Windows.Networking.Connectivity namespace – Jerry Sep 30 '15 at 23:27

1 Answers1

20

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 ?? "???";
Justin XL
  • 38,763
  • 7
  • 88
  • 133