W usłudze Windows .NET (C#), jak mogę uzyskać nazwę komputera?Uzyskaj nazwę komputera w usłudze systemu Windows?
Czy jest to niezawodna metoda, czy też powinienem ją opakować w try/catch?
W usłudze Windows .NET (C#), jak mogę uzyskać nazwę komputera?Uzyskaj nazwę komputera w usłudze systemu Windows?
Czy jest to niezawodna metoda, czy też powinienem ją opakować w try/catch?
Spójrz na Environment class. Są tam wiele miłych rzeczy tam, w tym MachineName:
string CurrentMachineName = Environment.MachineName;
Zgodnie z docs, to może generować InvalidOperationException więc trzeba zdawać sobie sprawę z tej możliwości. Ryzyko prawdopodobnie nie gwarantuje owijania go w try/catch.
Widzieliśmy sporadyczne awarie w terenie, więc powinieneś złapać IOE, jeśli twoja ścieżka kodowa jest krytyczna. – JBRWilkinson
Myślę, że najpierw musisz zdecydować, co masz na myśli przez "nazwę komputera".
Jak mówili inni, i ewentualnie „tradycyjnie” w systemie Windows, należy użyć właściwości Environment.MachineName
uzyskać nazwę komputera , który jest rzeczywiście nazwa NetBIOS maszyny. Inną opcją jest (w pełni kwalifikowana) nazwa DNS urządzenia. Należy jednak pamiętać, że jeden komputer może mieć wiele adapterów/adresów IP/cokolwiek, a tym samym wiele nazw DNS.
Biorąc pod uwagę sposób postępowania z potencjałem InvalidOperationException
z Environment.MachineName
, sugeruję zastanowienie się, co byś zrobił, gdybyś go spotkał. Jeśli jest coś, co możesz z tym zrobić, możesz i oczywiście go złapać.
Na przykład, w niektórych z mojego kodu, potrzebuję uzyskać nazwę komputera (nawiasem mówiąc także w usłudze), ale używam go tylko do celów diagnostycznych. Jeśli zawiedzie Environment.MachineName
, używam tylko ciągu "(unknown)"
w wynikach diagnostyki (a także rejestruję błąd raz).
Jeśli wynik jest niezbędny do dalszego przetwarzania, prawdopodobnie należy również uwzględnić wyjątek, zapisać incydent w dzienniku zdarzeń systemu Windows i "umrzeć".
Rozpatrzenie szczegółowych odpowiedzi i porad – AFract
Możliwy duplikat [Jak uzyskać nazwę komputera w .NET] (http://stackoverflow.com/questions/1768198/how-do-i-get-tcomputer-name-in-net) –