2009-01-19 6 views
10

Dans un service Windows .NET (C#), comment puis-je obtenir le nom de l'ordinateur?Obtenir le nom de l'ordinateur dans un service Windows?

Est-ce une méthode fiable, ou devrais-je l'emballer dans un essai/catch?

+0

Copie possible de [Comment obtenir le nom de l'ordinateur dans .NET] (http://stackoverflow.com/questions/1768198/how-do-i-get-the-computer-name-in-net) –

Répondre

20

Regardez le Environment class. Il sont beaucoup de belles choses là-dedans, y compris le MachineName:

string CurrentMachineName = Environment.MachineName; 

Selon les documents, ce qui pourrait générer un InvalidOperationException vous aurez donc besoin d'être au courant de cette possibilité. Le risque ne justifie probablement pas de l'emballer dans un essai/catch, cependant.

+2

Nous avons vu des échecs sporadiques sur le terrain, vous devriez donc attraper l'E/S si votre chemin de code est critique. – JBRWilkinson

12

Je pense d'abord que vous devez décider ce que vous entendez par "nom d'ordinateur".

Comme d'autres l'ont dit, et peut-être « traditionnellement » sur les fenêtres, vous pouvez utiliser la propriété Environment.MachineName pour obtenir le nom de l'ordinateur , qui est en fait le nom NetBIOS de la machine. Une autre option serait le nom DNS (entièrement qualifié) de la machine. Sachez cependant qu'une seule machine pourrait en réalité avoir plusieurs adaptateurs/adresses IP/peu importe et donc plusieurs noms DNS. Compte tenu de la gestion du potentiel de Environment.MachineName, je suggère de penser à ce que vous feriez réellement si vous le rencontrez. S'il y a quelque chose que vous pouvez faire à ce sujet, vous pouvez et bien sûr l'attraper. Par exemple, dans certains de mes codes, j'ai besoin d'obtenir le nom de l'ordinateur (accessoirement dans un service), mais je ne l'utilise qu'à des fins de diagnostic. Si le Environment.MachineName échoue, j'utilise juste une chaîne de "(unknown)" dans la sortie de diagnostic (et enregistre également une erreur une fois).

Si le résultat est vital pour votre traitement ultérieur, vous devriez probablement également attraper l'exception, écrire l'incident dans le journal des événements Windows et "mourir".

+0

Upvote pour la réponse détaillée et les conseils – AFract

Questions connexes