2009-01-19 10 views
10

En un servicio Windows .NET (C#), ¿cómo puedo obtener el nombre de la computadora?Obtener el nombre de la computadora en un servicio de Windows?

¿Es este un método confiable, o debería envolverlo en un try/catch?

+0

Posible duplicado de [¿Cómo obtengo el nombre de la computadora en .NET] (http://stackoverflow.com/questions/1768198/how-do-i-get-the-computer-name-in-net) –

Respuesta

20

Mire el Environment class. Todavía un montón de cosas buenas en ese país, incluyendo el MachineName:

string CurrentMachineName = Environment.MachineName; 

De acuerdo con los documentos, esto podría generar una InvalidOperationException por lo que tendrá que ser conscientes de esta posibilidad. Sin embargo, el riesgo probablemente no garantice su envoltura en una prueba/captura.

+2

Hemos visto fallas esporádicas en el campo, por lo que debe capturar el IOE si la ruta del código es crítica. – JBRWilkinson

12

Creo que primero tienes que decidir a qué te refieres con "nombre de computadora".

Como otros han dicho, y, posiblemente, "tradicionalmente" en las ventanas, se utiliza la propiedad Environment.MachineName para obtener el nombre del equipo , que es en realidad el nombre de NetBIOS de la máquina. Otra opción sería el nombre DNS (totalmente calificado) de la máquina. Tenga en cuenta, sin embargo, que una sola máquina podría tener múltiples adaptadores/direcciones IP/lo que sea y, por lo tanto, múltiples nombres DNS.

Teniendo en cuenta el manejo del potencial InvalidOperationException de Environment.MachineName, sugiero que piense qué haría si realmente lo encuentra. Si hay algo que puede hacer al respecto, puede, y por supuesto, atraparlo.

Por ejemplo, en algunos de mis códigos, necesito obtener el nombre de la computadora (por cierto, también en un servicio), pero solo lo uso para fines de diagnóstico. Si el Environment.MachineName falla, solo uso alguna cadena "(unknown)" en la salida de diagnóstico (y también registro un error una vez).

Si el resultado es vital para su posterior procesamiento, probablemente también tenga en cuenta la excepción, escriba el incidente en el registro de eventos de Windows y "muera".

+0

Votación a favor por la respuesta detallada y los consejos – AFract

Cuestiones relacionadas