在C#开发中,获取计算机名是一个比较常见的需求,无论是做本地应用开发还是服务端程序开发,都可能会用到这个功能。计算机名可以作为设备的唯一标识参考,也可以用于日志记录、权限管控等场景,下面介绍几种常用的实现方式。

方法一:使用Environment类获取
Environment类是C#中提供的一个静态类,包含了当前环境和平台的相关信息,其中MachineName属性可以直接返回当前计算机的名称,这是最简单常用的一种方式。
该方法的优点是调用简单,不需要额外引入其他命名空间,只要项目基于.NET Framework或者.NET Core都可以使用,兼容性非常好。
下面是具体的代码示例:
using System;
namespace GetComputerNameDemo
{
class Program
{
static void Main(string[] args)
{
// 使用Environment类的MachineName属性获取计算机名
string computerName = Environment.MachineName;
Console.WriteLine($"当前计算机名是:{computerName}");
}
}
}
方法二:使用Dns类获取
Dns类位于System.Net命名空间下,主要用于提供域名解析相关的功能,我们可以通过获取本地主机的DNS信息来得到计算机名,这种方式获取到的名称和系统设置的主机名一致。
使用这种方法需要先引入System.Net命名空间,适合在网络相关的场景中同时需要获取计算机名的场景使用。
具体代码示例如下:
using System;
using System.Net;
namespace GetComputerNameDemo
{
class Program
{
static void Main(string[] args)
{
// 使用Dns类获取本地主机名
string computerName = Dns.GetHostName();
Console.WriteLine($"当前计算机名是:{computerName}");
}
}
}
两种方法的区别和注意事项
下面通过表格对比两种方法的差异,方便开发者选择合适的实现方式:
| 对比项 | Environment.MachineName | Dns.GetHostName() |
|---|---|---|
| 所属命名空间 | System | System.Net |
| 调用复杂度 | 简单,无需额外引入命名空间 | 需要引入System.Net命名空间 |
| 返回值一致性 | 返回系统定义的计算机名 | 返回本地主机名,和计算机名通常一致 |
| 适用场景 | 通用场景,快速获取计算机名 | 网络相关场景,同时需要DNS相关功能 |
需要注意的是,如果计算机名包含特殊字符,获取到的字符串就是原始的名称,不需要额外做转义处理。另外在部分特殊环境(如容器环境)中,获取到的名称可能是容器对应的主机名,需要根据实际部署环境做适配。
扩展:获取带域名的完整计算机名
如果需要获取带域名的完整计算机名,可以结合Environment.UserDomainName属性来实现,代码示例如下:
using System;
namespace GetComputerNameDemo
{
class Program
{
static void Main(string[] args)
{
string computerName = Environment.MachineName;
string domainName = Environment.UserDomainName;
// 拼接完整名称,判断是否属于域环境
if (!string.IsNullOrEmpty(domainName) && domainName != computerName)
{
string fullComputerName = $"{computerName}.{domainName}";
Console.WriteLine($"带域名的完整计算机名是:{fullComputerName}");
}
else
{
Console.WriteLine($"当前计算机不在域环境中,计算机名是:{computerName}");
}
}
}
}
以上就是C#中获取计算机名的完整教程和代码实例,开发者可以根据实际的项目需求选择合适的实现方式,快速完成相关功能的开发。
C#计算机名Environment类Dns类修改时间:2026-06-09 08:57:18