2009-01-19 4 views
10

In einem .NET Windows-Dienst (C#), wie kann ich den Computernamen erhalten?Erhalten Sie den Computernamen in einem Windows-Dienst?

Ist dies eine zuverlässige Methode, oder sollte ich es in einen Versuch/Fang?

+0

Mögliches Duplikat von [Wie bekomme ich den Computernamen in .NET] (http://StackOverflow.com/Questions/1768198/How-Do--Get-the-Computer-Name-in-Net) –

Antwort

20

Schauen Sie sich die Environment class an. Im moment gibt es viele schöne Dinge in dort, einschließlich der MachineName:

string CurrentMachineName = Environment.MachineName; 

die Dokumentation nach, könnte dies eine InvalidOperationException erzeugen, so dass Sie sich bewusst von dieser Möglichkeit sein müssen. Das Risiko ist es wahrscheinlich nicht gerechtfertigt, es in einen Versuch/Fang zu wickeln.

+2

Wir haben sporadische Fehler vor Ort gesehen, daher sollten Sie den IOE abfangen, wenn der Codepfad kritisch ist. – JBRWilkinson

12

Ich denke zuerst müssen Sie entscheiden, was Sie mit "Computername" meinen.

Wie andere gesagt haben, und möglicherweise „traditionell“ auf Fenster, würden Sie die Environment.MachineName Eigenschaft der Computernamen, die die Maschine tatsächlich der NetBIOS-Name ist zu bekommen. Eine andere Option wäre der (vollständig qualifizierte) DNS-Name des Computers. Beachten Sie jedoch, dass eine einzelne Maschine tatsächlich mehrere Adapter/IP-Adressen/was auch immer haben könnte und somit mehrere DNS-Namen haben könnte.

Angesichts der Handhabung des Potenzials InvalidOperationException von Environment.MachineName, schlage ich vor, darüber nachzudenken, was Sie tatsächlich tun würden, wenn Sie darauf stoßen. Wenn Sie etwas dagegen tun können, können Sie es natürlich tun.

Zum Beispiel, in einigen meiner Code, muss ich den Computernamen (übrigens auch in einem Dienst), aber ich verwende es nur für Diagnosezwecke. Wenn die Environment.MachineName fehlschlägt, verwende ich nur einige "(unknown)" Zeichenfolge in der Diagnose-Ausgabe (und auch einen Fehler protokollieren einmal).

Wenn das Ergebnis für Ihre weitere Verarbeitung wichtig ist, sollten Sie wahrscheinlich auch die Ausnahme abfangen, den Vorfall in das Windows-Ereignisprotokoll schreiben und "sterben".

+0

Upvote für die detaillierte Antwort und die Ratschläge – AFract

Verwandte Themen