在大多数情况下windows的计算机名和计算机全名是相同的,但是在计算机加入域或者手动设置主DNS后缀之后就会产生不同,正在做的项目需要显示出系统的系统信息,内容和计算机属性的内容基本相同,其他内容均由WMI查询得出,但是并没有找到记录计算机全名的WMI类的属性,要是有人知道希望可以回复一下。
最终的解决办法为使用Windows API。
COMPUTER_NAME_FORMAT决定获得的计算机名称类型,ComputerNamePhysicalDnsFullyQualified为完整的计算机全名。
class Class
{
enum COMPUTER_NAME_FORMAT
{
ComputerNameNetBIOS,
ComputerNameDnsHostname,
ComputerNameDnsDomain,
ComputerNameDnsFullyQualified,
ComputerNamePhysicalNetBIOS,
ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain,
ComputerNamePhysicalDnsFullyQualified
}
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool GetComputerNameEx(COMPUTER_NAME_FORMAT NameType,
out StringBuilder lpBuffer, ref uint lpnSize);
[STAThread]
static void Main(string[] args)
{
bool success;
StringBuilder name = new StringBuilder(100);
uint size = 100;
success = GetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsFullyQualified, name, ref size);
Console.WriteLine(name.ToString());
}
}