@Malachi, esa pregunta es sobre los servicios de Windows.
Sam
2
@Sam un servicio de Windows es solo una aplicación de Windows que se ejecuta en segundo plano, por lo que realmente es lo mismo.
Malaquías
@Malachi, sí, sé a qué te refieres. Sin embargo, creo que las referencias a las formas específicas de ASP.NET y específicas de Winforms de hacer esto en las respuestas a esta pregunta podrían no aplicarse en esa pregunta.
Sam
1
@Malachi, creo que has entendido mal lo que quise decir con ASP.NET. No me refería a una aplicación ASP.NET que obtuviera los nombres de computadora de sus clientes, aunque hacerlo (para el nombre DNS) probablemente sea fácil ya que la aplicación obtendría las direcciones IP de los clientes. Me refería a las aplicaciones ASP.NET que obtienen los nombres de sus computadoras host. Vea la respuesta mejor calificada aquí para ver un ejemplo.
@tvanfosson: ¿cuál es la diferencia? Quiero decir, ¿cuál debo usar cuando? ¿Tiene esto alguna implicación de seguridad?
PK
26
Usaría el primero desde una consola o aplicación winforms, el segundo desde una aplicación web y el tercero si necesitara obtener el FQDN. Consulte la documentación referenciada para obtener información sobre los permisos requeridos.
tvanfosson
1
@tvanfosson Todos estos tres me dan el nombre del servidor y no la máquina del cliente que está accediendo a la página. ¿Así es como funciona? o estoy haciendo algo incorrectamente Me gustaría obtener la máquina del cliente, y no el servidor. Estoy usando formularios web con asp.NET 4.0
Ryan S
2
Acabo de probar esto y descubrí que Dns.GetHostName()no daba el nombre completo.
Sam
55
Tenga en cuenta que System.Enviornment.MachineName solo le dará el nombre NetBIOS, por lo que si el nombre de host tiene más de 15 caracteres, tendrá problemas si necesita el nombre completo. No puedo hablar por los demás.
RandomInsano
78
System.Environment.MachineName
O, si está utilizando Winforms, puede usar System.Windows.Forms.SystemInformation.ComputerName, que devuelve exactamente el mismo valor que System.Environment.MachineName.
Bueno, hay una forma más: Instrumentación de administración de Windows
using System.Management;try{ManagementObjectSearcher searcher =newManagementObjectSearcher("root\\CIMV2","SELECT Name FROM Win32_ComputerSystem");foreach(ManagementObject queryObj in searcher.Get()){Console.WriteLine("-----------------------------------");Console.WriteLine("Win32_ComputerSystem instance");Console.WriteLine("-----------------------------------");Console.WriteLine("Name: {0}", queryObj["Name"]);}}catch(ManagementException e){// exception handling}
El nombre DNS y el nombre de la computadora pueden diferir. ¡Está pidiendo el nombre de la computadora!
marsh-wiggle
4
Establecí el .InnerHtml de un <p>soporte para mi proyecto web en el nombre de la computadora del usuario haciendo lo siguiente:
HTML:
<div class="col-md-4"><h2>YourComputerNameIs</h2><p id="pcname" runat="server"></p><p><a class="btn btn-default" href="#">Learn more »</a></p></div>
C#:
using System;
using System.Web.UI;
namespace GetPCName{publicpartialclass_Default:Page{protectedvoidPage_Load(object sender,EventArgs e){
pcname.InnerHtml=Environment.MachineName;}}}
2 métodos más útiles: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName") para obtener el nombre de la PC del usuario si están conectados a través de Citrix XenApp o Terminal Services (también conocido como RDS, RDP, Escritorio remoto)
Respuestas:
System.Environment.MachineName
desde una consola o aplicación WinForms.HttpContext.Current.Server.MachineName
desde una aplicación webSystem.Net.Dns.GetHostName()
para obtener el FQDNConsulte ¿Cómo encontrar el FQDN de la máquina local en C # /. NET? si el último no le proporciona el FQDN y lo necesita.
Ver detalles sobre la diferencia entre SystemInformation.ComputerName, Environment.MachineName y Net.Dns.GetHostName
fuente
Dns.GetHostName()
no daba el nombre completo.System.Environment.MachineName
O, si está utilizando Winforms, puede usar
System.Windows.Forms.SystemInformation.ComputerName
, que devuelve exactamente el mismo valor queSystem.Environment.MachineName
.fuente
fuente
open system
...let system_name = System.Environment.MachineName
Algunos métodos se dan a continuación para obtener el nombre de la máquina o el nombre de la computadora
Método 1:-
Método 2: -
Método 3: -
Método 4: -
Para más ver mi blog
fuente
fuente
Puede tener acceso al nombre de la máquina usando Environment.MachineName .
fuente
Bueno, hay una forma más: Instrumentación de administración de Windows
MSDN
WMI
Creador de código WMI
Preguntas frecuentes
fuente
Prueba esto:
fuente
Establecí el .InnerHtml de un
<p>
soporte para mi proyecto web en el nombre de la computadora del usuario haciendo lo siguiente:HTML:
C#:
fuente
2 métodos más útiles: System.Environment.GetEnvironmentVariable ("ComputerName")
System.Environment.GetEnvironmentVariable ("ClientName") para obtener el nombre de la PC del usuario si están conectados a través de Citrix XenApp o Terminal Services (también conocido como RDS, RDP, Escritorio remoto)
fuente
Prueba este.
fuente