Diferencia entre SystemInformation.ComputerName, Environment.MachineName, y Net.Dns.GetHostName
Por lo que he visto, en la documentación de MSDN y en otras preguntas aquí, hay cuatro maneras de obtener el nombre de la máquina local.
Environment.MachineName;
System.Net.Dns.GetHostName();
System.Windows.Forms.SystemInformation.ComputerName;
System.Environment.GetEnvironmentVariable("COMPUTERNAME");
¿Hay una diferencia en lo que los métodos devolverán o todos ellos devolverán exactamente lo mismo todo el tiempo?
Nota: La primera vez que vi la lista en este post: ¿Cómo obtengo el nombre de la máquina local?
3 answers
Environment.MachineName
y System.Windows.Forms.SystemInformation.ComputerName
son idénticos y devuelve el nombre NetBIOS de la computadora. Este nombre está restringido a 15 caracteres y solo es visible en la LAN.
System.Net.Dns.GetHostName()
devuelve el nombre de host basado en TCP/IP del equipo. Al agregar un sufijo de dominio al nombre de host, puede resolver la dirección IP de su computadora a través de LAN / en Internet.
System.Environment.GetEnvironmentVariable("COMPUTERNAME")
devuelve el nombre del equipo establecido durante la instalación. NetBIOS y hostname se establecen inicialmente con el mismo nombre.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-11 10:01:50
Environment.MachineName
: NetBIOS nombre del equipo local leído desde el registro
Dns.GetHostName
: Obtiene el nombre de host del equipo que se refiere a un nombre de dominio que tiene una o más direcciones IP asociadas.
System.Windows.Forms.SystemInformation.ComputerName
: igual que el Medio ambiente.MachineName, la diferencia es que puede llamar a esto desde la página web y las aplicaciones de Windows.Entorno se utiliza solo aplicaciones de Windows.
Environment.GetEnvironmentVariable
método se utiliza para recuperar la variable de entorno del proceso actual.Para más información, usted puede mirar en :
http://msdn.microsoft.com/en-us/library/system.environment.getenvironmentvariable.aspx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-05 14:01:41
Hay algunas diferencias importantes entre estos métodos. Dicen que el nombre de su equipo "GöransLilla人物987654321".
medio Ambiente.MachineName luego devolverá GÖRANSLILLA人998. Eso está truncado y todo en mayúsculas.
Dns.GetHostName will return GöransLilla??987654321. Longitud completa y carcasa correcta, pero los caracteres multibyte chinos han sido reemplazados por '?'. El ' ö ' sueco se mantiene sin embargo.
La única manera que conozco obtener el nombre real como se especifica en Windows es con pinvoke.
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool GetComputerNameEx(COMPUTER_NAME_FORMAT NameType, System.Text.StringBuilder lpBuffer, ref uint lpnSize);
System.Text.StringBuilder nameBuilder = new System.Text.StringBuilder(260);
uint size = 260;
bool success = GetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameDnsHostname, nameBuilder, ref size);
Console.WriteLine(nameBuilder.ToString());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-28 08:50:37