How can you get the FQDN of a local machine in C#?
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
- How to know full paths to DLL's from .csproj f
NOTE: This solution only works when targeting the .NET 2.0 (and newer) frameworks.
UPDATE
Since a lot of people have commented that Sam's Answer is more concise I've decided to add some comments to the answer.
The most important thing to note is that the code I gave is not equivalent to the following code:
While in the general case when the machine is networked and part of a domain, both methods will generally produce the same result, in other scenarios the results will differ.
A scenario where the output will be different is when the machine is not part of a domain. In this case, the
Dns.GetHostEntry("LocalHost").HostName
will returnlocalhost
while theGetFQDN()
method above will return the NETBIOS name of the host.This distinction is important when the purpose of finding the machine FQDN is to log information, or generate a report. Most of the time I've used this method in logs or reports that are subsequently used to map information back to a specific machine. If the machines are not networked, the
localhost
identifier is useless, whereas the name gives the needed information.So ultimately it's up to each user which method is better suited for their application, depending on what result they need. But to say that this answer is wrong for not being concise enough is superficial at best.
See an example where the output will be different: http://ideone.com/q4S4I0
And for Framework 1.1 is as simple as this:
And then remove the machine NETBIOS name to retrieve only the domainName
A slight improvement on Matt Z's answer so that a trailing full stop isn't returned if the computer is not a member of a domain: