usuario tag propiedad obtener nombre net logueado c# .net windows-services

obtener - propiedad tag c#



Obtener el nombre de la computadora en un servicio de Windows? (2)

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

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


Mira la clase de Medio Ambiente . Hay muchas cosas buenas allí, incluido MachineName :

string CurrentMachineName = Environment.MachineName;

De acuerdo con los documentos, esto podría generar una InvalidOperationException, por lo que deberá tener en cuenta esa posibilidad. Sin embargo, el riesgo probablemente no garantice su envoltura en una prueba / captura.


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

Como otros han dicho, y posiblemente "tradicionalmente" en Windows, usaría la propiedad Environment.MachineName para obtener el nombre de la computadora , que en realidad es el nombre 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 de la posible InvalidOperationException de Environment.MachineName , sugiero que piense qué haría en realidad si 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 Environment.MachineName falla, solo uso alguna cadena "(unknown)" en la salida de diagnóstico (y también registro un error).

Si el resultado es vital para su posterior procesamiento, probablemente también deba tomar la excepción, escribir el incidente en el registro de eventos de Windows y "morir".