虽然其他人已经说过System.Environment.MachineName会返回机器的名称,但要注意......
该属性仅返回NetBIOS名称(并且仅当您的应用程序具有EnvironmentPermissionAccess.Read权限时).您的机器名称可能超过以下定义的长度:
MAX_COMPUTERNAME_LENGTH
Run Code Online (Sandbox Code Playgroud)
在这些情况下,System.Environment.MachineName不会返回正确的名称!
另请注意,您的计算机可以使用多个名称,在Win32中有一个方法GetComputerNameEx,它能够获取与这些不同名称类型相匹配的名称:
如果您需要此信息,则可能需要通过p/invoke转到Win32,例如:
class Class1
{
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(260);
uint size = 260;
success = GetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameDnsDomain,
name, ref size);
Console.WriteLine(name.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)